With additional index 2

This commit is contained in:
Lutz
2021-03-18 14:40:25 +01:00
parent fc15ebdff7
commit 8598cbeea4

View File

@@ -255,10 +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: 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) * 09/03/2021 LScheffler v1.19.59 Enhancement: Log settings object handed to execute (Debug > 0)
* xx/xx/2021 LScheffler v1.19.xx Enhancement: #DEFINES of index handling in wrong order (LEN(X) before X was defined) * 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 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_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: 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
* </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES> * </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES>
* *
@@ -542,11 +545,11 @@ Lparameters tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb
#Define C_CDXIDX_F '</IndexFiles>' && SF written, but not read #Define C_CDXIDX_F '</IndexFiles>' && SF written, but not read
#Define C_CDX_I '<IndexFile' && SF written, but not read #Define C_CDX_I '<IndexFile' && SF written, but not read
#Define C_CDX_F '</IndexFile>' && SF written, but not read #Define C_CDX_F '</IndexFile>' && SF written, but not read
#DEFINE C_CDX_Type_ 'Type="' #Define C_CDX_Type_ 'Type="'
#DEFINE C_CDX_Type_Struct 'Structural' #Define C_CDX_Type_Struct 'Structural'
#DEFINE C_CDX_Type_Compound 'Compound' #Define C_CDX_Type_Compound 'Compound'
#DEFINE C_CDX_Type_IDX 'Standalone' #Define C_CDX_Type_IDX 'Standalone'
#DEFINE C_CDX_File_ 'File="' #Define C_CDX_File_ 'File="'
#Define C_INDEXES_I '<INDEXES>' && SF Read / write, no len, used w/o äDEFINE too, len #Define C_INDEXES_I '<INDEXES>' && SF Read / write, no len, used w/o äDEFINE too, len
#Define C_INDEXES_F '</INDEXES>' && SF Read / write, no len, used w/o äDEFINE too, len #Define C_INDEXES_F '</INDEXES>' && SF Read / write, no len, used w/o äDEFINE too, len
#Define C_INDEX_I '<INDEX>' && SF used for read, not write? #Define C_INDEX_I '<INDEX>' && SF used for read, not write?
@@ -696,7 +699,7 @@ If Atc('-BIN2PRG','-'+tc_InputFile) > 0 Or Atc('-PRG2BIN','-'+tc_InputFile) > 0
OR Atc('-SHOWMSG','-'+tc_InputFile) > 0 Or Atc('-INTERACTIVE','-'+tc_InputFile) > 0 ; OR Atc('-SHOWMSG','-'+tc_InputFile) > 0 Or Atc('-INTERACTIVE','-'+tc_InputFile) > 0 ;
OR Atc('-SIMERR_I0','-'+tc_InputFile) > 0 Or Atc('-SIMERR_I1','-'+tc_InputFile) > 0 ; OR Atc('-SIMERR_I0','-'+tc_InputFile) > 0 Or Atc('-SIMERR_I1','-'+tc_InputFile) > 0 ;
OR Atc('-SIMERR_O1','-'+tc_InputFile) > 0; OR Atc('-SIMERR_O1','-'+tc_InputFile) > 0;
OR UPPER(tc_InputFile)=='-C' OR tc_InputFile=='-t' Then OR Upper(tc_InputFile)=='-C' Or tc_InputFile=='-t' Then
pcParamX = tc_InputFile pcParamX = tc_InputFile
tc_InputFile = tcType tc_InputFile = tcType
tcType = pcParamX tcType = pcParamX
@@ -704,32 +707,37 @@ If Atc('-BIN2PRG','-'+tc_InputFile) > 0 Or Atc('-PRG2BIN','-'+tc_InputFile) > 0
Endif Endif
* only 2 paras for -cCt * only 2 paras for -cCt
If Pcount()#2 And ( Upper(tcType)=='-C' Or tcType=='-t' ) Then Do Case
tc_InputFile = "" Case Pcount()=1 And tcType=='-t' And !Empty( Dbf() )
tcType = "" tc_InputFile = Dbf() + '._cfg'
Endif &&PCOUNT()#2 AND ( UPPER(tcType)=='-C' OR tcType=='-t' )
Otherwise
tc_InputFile = ""
tcType = ""
Endcase
*!* /Changed by: Lutz Scheffler 15.2.2021 *!* /Changed by: Lutz Scheffler 15.2.2021
Try Try
loEx = Null loEx = Null
loCnv = Createobject("c_foxbin2prg") loCnv = Createobject("c_foxbin2prg")
*** DH 2021-03-04: handle tcOutputFolder *** DH 2021-03-04: handle tcOutputFolder
if not empty(tcOutputFolder) If Not Empty(tcOutputFolder)
loCnv.cOutputFolder = tcOutputFolder loCnv.cOutputFolder = tcOutputFolder
endif &&not empty(tcOutputFolder) Endif &&not empty(tcOutputFolder)
*** DH 2021-03-04: end of new code *** DH 2021-03-04: end of new code
lnResp = loCnv.execute( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; lnResp = loCnv.execute( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ;
, tcDontShowProgress, Null, @loEx, .F., tcOriginalFileName, tcRecompile, tcNoTimestamps ; , tcDontShowProgress, Null, @loEx, .F., tcOriginalFileName, tcRecompile, tcNoTimestamps ;
, .F., .F., .F., tcCFG_File ) , .F., .F., .F., tcCFG_File )
Catch To loEx Catch To loEx
*-- Esto solo es para errores en el INIT, ya que los demás se deben capturar y tratar antes. *-- Esto solo es para errores en el INIT, ya que los demás se deben capturar y tratar antes.
lnResp = loEx.ErrorNo lnResp = loEx.ErrorNo
Messagebox( 'Error ' + Transform(loEx.ErrorNo) + ', ' + loEx.Message + C_CR ; Messagebox( 'Error ' + Transform(loEx.ErrorNo) + ', ' + loEx.Message + C_CR ;
+ loEx.Procedure + ', Line ' + Transform(loEx.Lineno) + C_CR ; + loEx.Procedure + ', Line ' + Transform(loEx.Lineno) + C_CR ;
+ loEx.Details ; + loEx.Details ;
, 0+16+4096 ; , 0+16+4096 ;
, '' ; , '' ;
, 60000 ) , 60000 )
Endtry Endtry
AddProperty(_Screen, 'ExitCode', lnResp) AddProperty(_Screen, 'ExitCode', lnResp)
@@ -959,8 +967,8 @@ Define Class c_foxbin2prg As Session
* additional options controlling * additional options controlling
* - splitt of DBC separated from VCX/SCX * - splitt of DBC separated from VCX/SCX
* - new operations of DBF * - new operations of DBF
l_OldFilesPerDBC = .T. l_OldFilesPerDBC = .T.
n_UseFilesPerDBC = 0 n_UseFilesPerDBC = 0
l_RedirectFilePerDBCToMain = .F. l_RedirectFilePerDBCToMain = .F.
l_ItemPerDBCCheck = .F. l_ItemPerDBCCheck = .F.
l_DBF_BinChar_Base64 = .T. l_DBF_BinChar_Base64 = .T.
@@ -1785,13 +1793,13 @@ Define Class c_foxbin2prg As Session
*** DH 2021-03-04: added n_HomeDir_Access *** DH 2021-03-04: added n_HomeDir_Access
PROCEDURE n_HomeDir_ACCESS Procedure n_HomeDir_ACCESS
IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) If This.n_CFG_Actual = 0 Or Isnull( This.o_Configuration( This.n_CFG_Actual ) )
RETURN THIS.n_HomeDir Return This.n_HomeDir
ELSE Else
RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).n_HomeDir, THIS.n_HomeDir ) Return Nvl( This.o_Configuration( This.n_CFG_Actual ).n_HomeDir, This.n_HomeDir )
ENDIF Endif
ENDPROC Endproc
*** DH 2021-03-04: end of new code *** DH 2021-03-04: end of new code
@@ -2368,7 +2376,7 @@ Define Class c_foxbin2prg As Session
Loop Loop
Case Left( laConfig(m.I), 10 ) == Lower('Extension:') Case Left( laConfig(m.I), 10 ) == Lower('Extension:')
lcConfData = Alltrim( Substr( laConfig(m.I), 11 ) ) lcConfData = Alltrim( Substr( laConfig(m.I), 11 , AT('&'+'&',laConfig(m.I)) - 11 ) )
lcExt = Alltrim( Getwordnum( lcConfData, 1, '=' ) ) lcExt = Alltrim( Getwordnum( lcConfData, 1, '=' ) )
lcProp = 'c_' + lcExt lcProp = 'c_' + lcExt
If Pemstatus( lo_CFG, lcProp, 5 ) If Pemstatus( lo_CFG, lcProp, 5 )
@@ -2455,10 +2463,10 @@ Define Class c_foxbin2prg As Session
If Inlist( lcValue, '0', '1', '2' ) Then If Inlist( lcValue, '0', '1', '2' ) Then
lo_CFG.n_UseClassPerFile = Int( Val(lcValue) ) lo_CFG.n_UseClassPerFile = Int( Val(lcValue) )
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > UseClassPerFile: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > UseClassPerFile: ' + Transform(lcValue) )
IF !lo_CFG.l_OldFilesPerDBC THEN If !lo_CFG.l_OldFilesPerDBC Then
lo_CFG.n_UseFilesPerDBC = lo_CFG.n_UseClassPerFile lo_CFG.n_UseFilesPerDBC = lo_CFG.n_UseClassPerFile
.writeLog( C_TAB + Justfname(lcConfigFile) + ' => UseFilesPerDBC: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' => UseFilesPerDBC: ' + Transform(lcValue) )
endif Endif
Endif Endif
Case Left( laConfig(m.I), 15 ) == Lower('OldFilesPerDBC:') Case Left( laConfig(m.I), 15 ) == Lower('OldFilesPerDBC:')
@@ -2466,33 +2474,33 @@ Define Class c_foxbin2prg As Session
If Inlist( lcValue, '0', '1' ) Then If Inlist( lcValue, '0', '1' ) Then
lo_CFG.l_OldFilesPerDBC = ( Transform(lcValue) == '1' ) lo_CFG.l_OldFilesPerDBC = ( Transform(lcValue) == '1' )
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > OldFilesPerDBC: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > OldFilesPerDBC: ' + Transform(lcValue) )
IF !lo_CFG.l_OldFilesPerDBC THEN If !lo_CFG.l_OldFilesPerDBC Then
lo_CFG.n_UseFilesPerDBC = lo_CFG.n_UseClassPerFile lo_CFG.n_UseFilesPerDBC = lo_CFG.n_UseClassPerFile
lo_CFG.l_RedirectFilePerDBCToMain = lo_CFG.l_RedirectClassPerFileToMain lo_CFG.l_RedirectFilePerDBCToMain = lo_CFG.l_RedirectClassPerFileToMain
lo_CFG.l_ItemPerDBCCheck = lo_CFG.l_ClassPerFileCheck lo_CFG.l_ItemPerDBCCheck = lo_CFG.l_ClassPerFileCheck
.writeLog( C_TAB + Justfname(lcConfigFile) + ' ==> UseFilesPerDBC: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' ==> UseFilesPerDBC: ' + Transform(lcValue) )
.writeLog( C_TAB + Justfname(lcConfigFile) + ' ==> RedirectFilePerDBCToMain: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' ==> RedirectFilePerDBCToMain: ' + Transform(lcValue) )
.writeLog( C_TAB + Justfname(lcConfigFile) + ' ==> ItemPerDBCCheck: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' ==> ItemPerDBCCheck: ' + Transform(lcValue) )
endif Endif
Endif Endif
Case Left( laConfig(m.I), 15 ) == Lower('UseFilesPerDBC:') Case Left( laConfig(m.I), 15 ) == Lower('UseFilesPerDBC:')
lcValue = Alltrim( Substr( laConfig(m.I), 16 ) ) lcValue = Alltrim( Substr( laConfig(m.I), 16 ) )
If lo_CFG.l_OldFilesPerDBC AND Inlist( lcValue, '0', '1' ) Then If lo_CFG.l_OldFilesPerDBC And Inlist( lcValue, '0', '1' ) Then
lo_CFG.n_UseFilesPerDBC = Int( Val(lcValue) ) lo_CFG.n_UseFilesPerDBC = Int( Val(lcValue) )
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > UseFilesPerDBC: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > UseFilesPerDBC: ' + Transform(lcValue) )
Endif Endif
Case Left( laConfig(m.I), 25 ) == Lower('RedirectFilePerDBCToMain:') Case Left( laConfig(m.I), 25 ) == Lower('RedirectFilePerDBCToMain:')
lcValue = Alltrim( Substr( laConfig(m.I), 26 ) ) lcValue = Alltrim( Substr( laConfig(m.I), 26 ) )
If lo_CFG.l_OldFilesPerDBC AND Inlist( lcValue, '0', '1' ) Then If lo_CFG.l_OldFilesPerDBC And Inlist( lcValue, '0', '1' ) Then
lo_CFG.l_RedirectFilePerDBCToMain = ( Transform(lcValue) == '1' ) lo_CFG.l_RedirectFilePerDBCToMain = ( Transform(lcValue) == '1' )
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > RedirectFilePerDBCToMain: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > RedirectFilePerDBCToMain: ' + Transform(lcValue) )
Endif Endif
Case Left( laConfig(m.I), 16 ) == Lower('ItemPerDBCCheck:') Case Left( laConfig(m.I), 16 ) == Lower('ItemPerDBCCheck:')
lcValue = Alltrim( Substr( laConfig(m.I), 17 ) ) lcValue = Alltrim( Substr( laConfig(m.I), 17 ) )
If lo_CFG.l_OldFilesPerDBC AND Inlist( lcValue, '0', '1' ) Then If lo_CFG.l_OldFilesPerDBC And Inlist( lcValue, '0', '1' ) Then
lo_CFG.l_ItemPerDBCCheck = ( Transform(lcValue) == '1' ) lo_CFG.l_ItemPerDBCCheck = ( Transform(lcValue) == '1' )
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > ItemPerDBCCheck: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > ItemPerDBCCheck: ' + Transform(lcValue) )
Endif Endif
@@ -2516,10 +2524,10 @@ Define Class c_foxbin2prg As Session
If Inlist( lcValue, '0', '1' ) Then If Inlist( lcValue, '0', '1' ) Then
lo_CFG.l_ClassPerFileCheck = ( Transform(lcValue) == '1' ) lo_CFG.l_ClassPerFileCheck = ( Transform(lcValue) == '1' )
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > ClassPerFileCheck: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > ClassPerFileCheck: ' + Transform(lcValue) )
IF !lo_CFG.l_OldFilesPerDBC THEN If !lo_CFG.l_OldFilesPerDBC Then
lo_CFG.l_ItemPerDBCCheck = lo_CFG.l_ClassPerFileCheck lo_CFG.l_ItemPerDBCCheck = lo_CFG.l_ClassPerFileCheck
.writeLog( C_TAB + Justfname(lcConfigFile) + ' => ItemPerDBCCheck: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' => ItemPerDBCCheck: ' + Transform(lcValue) )
endif Endif
Endif Endif
Case Left( laConfig(m.I), 27 ) == Lower('RedirectClassPerFileToMain:') Case Left( laConfig(m.I), 27 ) == Lower('RedirectClassPerFileToMain:')
@@ -2527,10 +2535,10 @@ Define Class c_foxbin2prg As Session
If Inlist( lcValue, '0', '1' ) Then If Inlist( lcValue, '0', '1' ) Then
lo_CFG.l_RedirectClassPerFileToMain = ( Transform(lcValue) == '1' ) lo_CFG.l_RedirectClassPerFileToMain = ( Transform(lcValue) == '1' )
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > RedirectClassPerFileToMain: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > RedirectClassPerFileToMain: ' + Transform(lcValue) )
IF !lo_CFG.l_OldFilesPerDBC THEN If !lo_CFG.l_OldFilesPerDBC Then
lo_CFG.l_RedirectFilePerDBCToMain = lo_CFG.l_RedirectClassPerFileToMain lo_CFG.l_RedirectFilePerDBCToMain = lo_CFG.l_RedirectClassPerFileToMain
.writeLog( C_TAB + Justfname(lcConfigFile) + ' => RedirectFilePerDBCToMain: ' + Transform(lcValue) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' => RedirectFilePerDBCToMain: ' + Transform(lcValue) )
endif Endif
Endif Endif
*!* /Changed by: Lutz Scheffler 21.02.2021 *!* /Changed by: Lutz Scheffler 21.02.2021
@@ -2561,7 +2569,7 @@ Define Class c_foxbin2prg As Session
Case Left( laConfig(m.I), 9 ) == Lower('Language:') Case Left( laConfig(m.I), 9 ) == Lower('Language:')
*-- CASO ESPECIAL: El lenguaje no se guarda en lo_CFG, porque es un seteo Global. *-- CASO ESPECIAL: El lenguaje no se guarda en lo_CFG, porque es un seteo Global.
lcValue = Alltrim( Substr( laConfig(m.I), 10 ) ) lcValue = Alltrim( Substr( laConfig(m.I), 10 , AT('&'+'&',laConfig(m.I)) - 10 ) )
.changeLanguage(lcValue) .changeLanguage(lcValue)
lo_CFG.c_Language_In = m.lcValue lo_CFG.c_Language_In = m.lcValue
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > Language: ' + Transform(lcValue) + ' (' + .c_Language + ')' ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > Language: ' + Transform(lcValue) + ' (' + .c_Language + ')' )
@@ -2630,14 +2638,14 @@ Define Class c_foxbin2prg As Session
Endif Endif
Case Left( laConfig(m.I), 24 ) == Lower('DBF_Conversion_Included:') Case Left( laConfig(m.I), 24 ) == Lower('DBF_Conversion_Included:')
lcValue = Alltrim( Substr( laConfig(m.I), 25 ) ) lcValue = Alltrim( Substr( laConfig(m.I), 25 , AT('&'+'&',laConfig(m.I)) - 25 ) )
If Not Empty(lcValue) Then If Not Empty(lcValue) Then
lo_CFG.DBF_Conversion_Included = lcValue lo_CFG.DBF_Conversion_Included = lcValue
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > DBF_Conversion_Included: ' + Transform(lo_CFG.DBF_Conversion_Included) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > DBF_Conversion_Included: ' + Transform(lo_CFG.DBF_Conversion_Included) )
Endif Endif
Case Left( laConfig(m.I), 24 ) == Lower('DBF_Conversion_Excluded:') Case Left( laConfig(m.I), 24 ) == Lower('DBF_Conversion_Excluded:')
lcValue = Alltrim( Substr( laConfig(m.I), 25 ) ) lcValue = Alltrim( Substr( laConfig(m.I), 25 , AT('&'+'&',laConfig(m.I)) - 25 ) )
If Not Empty(lcValue) Then If Not Empty(lcValue) Then
lo_CFG.DBF_Conversion_Excluded = lcValue lo_CFG.DBF_Conversion_Excluded = lcValue
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > DBF_Conversion_Excluded: ' + Transform(lo_CFG.DBF_Conversion_Excluded) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > DBF_Conversion_Excluded: ' + Transform(lo_CFG.DBF_Conversion_Excluded) )
@@ -2677,12 +2685,12 @@ Define Class c_foxbin2prg As Session
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > PRG_Compat_Level: ' + Transform(lo_CFG.n_PRG_Compat_Level) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > PRG_Compat_Level: ' + Transform(lo_CFG.n_PRG_Compat_Level) )
*** DH 2021-03-04: handle n_HomeDir configuration setting *** DH 2021-03-04: handle n_HomeDir configuration setting
CASE LEFT( laConfig(m.I), 8 ) == LOWER('HomeDir:') Case Left( laConfig(m.I), 8 ) == Lower('HomeDir:')
lcValue = ALLTRIM( SUBSTR( laConfig(m.I), 9 ) ) lcValue = Alltrim( Substr( laConfig(m.I), 9 ) )
IF INLIST( lcValue, '0', '1' ) THEN If Inlist( lcValue, '0', '1' ) Then
lo_CFG.n_HomeDir = INT( VAL( lcValue ) ) lo_CFG.n_HomeDir = Int( Val( lcValue ) )
.writeLog( C_TAB + JUSTFNAME(lcConfigFile) + ' > HomeDir: ' + TRANSFORM(lo_CFG.n_HomeDir) ) .writeLog( C_TAB + Justfname(lcConfigFile) + ' > HomeDir: ' + Transform(lo_CFG.n_HomeDir) )
ENDIF Endif
*** DH 2021-03-04: end of new code *** DH 2021-03-04: end of new code
Endcase Endcase
@@ -2729,8 +2737,8 @@ Define Class c_foxbin2prg As Session
.n_CFG_EvaluateFromParam = .n_CFG_Actual .n_CFG_EvaluateFromParam = .n_CFG_Actual
Endif Endif
Else Else
*-- Si no es llMasterEval, es porque esta llamada es cíclica desde este mismo método, *-- Si no es llMasterEval, es porque esta llamada es cíclica desde este mismo método,
*-- y no hay parámetros para evaluar, ya que se mandan todos vacíos desde el inicial. *-- y no hay parámetros para evaluar, ya que se mandan todos vacíos desde el inicial.
If Not tl_ForceLog Then If Not tl_ForceLog Then
Exit Exit
Endif &&NOT tl_ForceLog Endif &&NOT tl_ForceLog
@@ -2923,6 +2931,7 @@ Define Class c_foxbin2prg As Session
lnFileCount = Adir(laDirFile, lcTableCFG) lnFileCount = Adir(laDirFile, lcTableCFG)
If lnFileCount = 1 If lnFileCount = 1
to_out_DBF_CFG = Createobject("CL_DBF_CFG") to_out_DBF_CFG = Createobject("CL_DBF_CFG")
If tlGenerateLog Then If tlGenerateLog Then
@@ -2944,13 +2953,13 @@ Define Class c_foxbin2prg As Session
Endif Endif
Case Left( lcConfigItem, 21 ) == Lower('DBF_Conversion_Order:') Case Left( lcConfigItem, 21 ) == Lower('DBF_Conversion_Order:')
to_out_DBF_CFG.DBF_Conversion_Order = Alltrim( Substr( laConfig(m.I), 22 ) ) to_out_DBF_CFG.DBF_Conversion_Order = Alltrim( Substr( laConfig(m.I), 22 , AT('&'+'&',laConfig(m.I)) - 22 ) )
If tlGenerateLog Then If tlGenerateLog Then
This.writeLog(' ' + Justfname(lcTableCFG) + ' > DBF_Conversion_Order: ' + to_out_DBF_CFG.DBF_Conversion_Order ) This.writeLog(' ' + Justfname(lcTableCFG) + ' > DBF_Conversion_Order: ' + to_out_DBF_CFG.DBF_Conversion_Order )
Endif Endif
Case Left( lcConfigItem, 25 ) == Lower('DBF_Conversion_Condition:') Case Left( lcConfigItem, 25 ) == Lower('DBF_Conversion_Condition:')
to_out_DBF_CFG.DBF_Conversion_Condition = Alltrim( Substr( laConfig(m.I), 26 ) ) to_out_DBF_CFG.DBF_Conversion_Condition = Alltrim( Substr( laConfig(m.I), 26 , AT('&'+'&',laConfig(m.I)) - 26 ) )
If tlGenerateLog Then If tlGenerateLog Then
This.writeLog(' ' + Justfname(lcTableCFG) + ' > DBF_Conversion_Condition: ' + to_out_DBF_CFG.DBF_Conversion_Condition ) This.writeLog(' ' + Justfname(lcTableCFG) + ' > DBF_Conversion_Condition: ' + to_out_DBF_CFG.DBF_Conversion_Condition )
Endif Endif
@@ -2960,7 +2969,7 @@ Define Class c_foxbin2prg As Session
* additional options controlling * additional options controlling
* - new operations of DBF, additional list of non structural index files * - new operations of DBF, additional list of non structural index files
Case Left( lcConfigItem, 14 ) == Lower('DBF_IndexList:') Case Left( lcConfigItem, 14 ) == Lower('DBF_IndexList:')
to_out_DBF_CFG.DBF_IndexList = Int( Val( Substr( laConfig(m.I), 15 ) ) ) to_out_DBF_CFG.DBF_IndexList = Substr( laConfig(m.I), 15 , AT('&'+'&',laConfig(m.I)) - 15 )
If tlGenerateLog Then If tlGenerateLog Then
This.writeLog(' ' + Justfname(lcTableCFG) + ' >DBF_IndexList: ' + Transform(to_out_DBF_CFG.DBF_IndexList) ) This.writeLog(' ' + Justfname(lcTableCFG) + ' >DBF_IndexList: ' + Transform(to_out_DBF_CFG.DBF_IndexList) )
Endif Endif
@@ -3291,31 +3300,6 @@ Define Class c_foxbin2prg As Session
* EXIT * EXIT
*ENDIF *ENDIF
*!* *!* *!* Changed by: SF 15.3.2021
*!* *!* *!* <pdm>
*!* *!* *!* <change date="{^2021-03-15,09:04:00}">Changed by: SF<br />
*!* *!* *!* add code to allow mutliple file input to define additional index per dbf
*!* *!* *!* tc_InputFile holds multiple files delimited by chr(0)
*!* *!* *!* first file is input file, followed by additional files
*!* *!* *!* will always be processed to identify tc_InputFile, use only for DBF to PRG,
*!* *!* *!* adding Nonstructural compound index (cdx) or Standalone index (.idx) files
*!* *!* *!* </change>
*!* *!* *!* </pdm>
*!* *!* m.lnFileCount = ALINES(.a_InputFiles,tc_InputFile,5,0h00)
*!* *!* * if string started wit 0h00 we set tc_InputFile to normal string
*!* *!* tc_InputFile = ''+.a_InputFiles(1)
*!* *!* IF m.lnFileCount = 1 THEN
*!* *!* .a_InputFiles = ''
*!* *!* ELSE &&m.lnFileCount = 1
*!* *!* ADEL(.a_InputFiles,1)
*!* *!* m.lnFileCount = m.lnFileCount-1
*!* *!* DIMENSION;
*!* *!* .a_InputFiles(m.lnFileCount)
*!* *!* ENDIF &&m.lnFileCount = 1
*!* *!* *!* /Changed by: SF 15.3.2021
*-- Reconocimiento de la clase indicada *-- Reconocimiento de la clase indicada
*-- Ej: [c:\desa\test\library.vcx::classname] *-- Ej: [c:\desa\test\library.vcx::classname]
@@ -3409,34 +3393,38 @@ Define Class c_foxbin2prg As Session
* allow to import only the class to file.VCX with n_RedirectClassType = 2 * allow to import only the class to file.VCX with n_RedirectClassType = 2
* n_RedirectClassType = 0 will import all classes of file.VCX (as just handing file.vc2) * n_RedirectClassType = 0 will import all classes of file.VCX (as just handing file.vc2)
* n_RedirectClassType = 1 will import the class to single lib file[.baseclass].class.VCX * n_RedirectClassType = 1 will import the class to single lib file[.baseclass].class.VCX
Do Case Do Case
Case .n_RedirectClassType # 2 Case LOWER(m.lcType)=='-c'
* not handled * not handled
Case !Empty(.c_ClassToConvert) Case m.lcType=='-t'
* not otherwise * not handled
Case .n_UseClassPerFile = 0 Case .n_RedirectClassType # 2
* not handled * not handled
Case Occurs('.',m.tc_InputFile) > .n_UseClassPerFile Case !Empty(.c_ClassToConvert)
* we must have more dots then UseClassPerFile, because there is an extension * not otherwise
Case .n_UseClassPerFile = 0
* not handled
Case Occurs('.',m.tc_InputFile) > .n_UseClassPerFile
* we must have more dots then UseClassPerFile, because there is an extension
*class *class
.c_ClassToConvert = Lower( Justext( Juststem( m.tc_InputFile ) ) ) .c_ClassToConvert = Lower( Justext( Juststem( m.tc_InputFile ) ) )
*remove class *remove class
tc_InputFile = Lower( JustPath( m.tc_InputFile ) + '\' + Juststem( Juststem( m.tc_InputFile ) ) + '.' + Justext( m.tc_InputFile ) ) tc_InputFile = Lower( Justpath( m.tc_InputFile ) + '\' + Juststem( Juststem( m.tc_InputFile ) ) + '.' + Justext( m.tc_InputFile ) )
*remove baseclass *remove baseclass
If .n_UseClassPerFile = 2 If .n_UseClassPerFile = 2
*remove baseclass *remove baseclass
tc_InputFile = Lower( JustPath( m.tc_InputFile ) + '\' + Juststem( Juststem( m.tc_InputFile ) ) + '.' + Justext( m.tc_InputFile ) ) tc_InputFile = Lower( Justpath( m.tc_InputFile ) + '\' + Juststem( Juststem( m.tc_InputFile ) ) + '.' + Justext( m.tc_InputFile ) )
Endif Endif
* count anything then -BIN2PRG as import * count anything then -BIN2PRG as import
.c_ClassOperationType = Iif( Atc('-BIN2PRG','-'+tcType) > 0 , 'E', 'I') .c_ClassOperationType = Iif( Atc('-BIN2PRG','-'+tcType) > 0 , 'E', 'I')
Otherwise Otherwise
* not handled * not handled
Endcase Endcase
*!* /Changed by: Lutz Scheffler 04.3.2021 *!* /Changed by: Lutz Scheffler 04.3.2021
* Redefinir nombre archivo de entrada según el tipo de conversión (IMPORT/EXPORT) * Redefinir nombre archivo de entrada según el tipo de conversión (IMPORT/EXPORT)
If .c_ClassOperationType = 'I' If .c_ClassOperationType = 'I'
* En el caso de importar, debo cambiar la sintaxis de tc_InputFile para poder usar * En el caso de importar, debo cambiar la sintaxis de tc_InputFile para poder usar
* la conversión existente de clase vc2. * la conversión existente de clase vc2.
@@ -3462,29 +3450,23 @@ Define Class c_foxbin2prg As Session
Messagebox( loLang.C_FOXBIN2PRG_JUST_VFP_9_LOC, 0+64+4096, 'FoxBin2Prg ' + This.c_FB2PRG_EXE_Version + ': ' + loLang.C_FOXBIN2PRG_WARN_CAPTION_LOC + ' (' + .c_Language + ')', 60000 ) Messagebox( loLang.C_FOXBIN2PRG_JUST_VFP_9_LOC, 0+64+4096, 'FoxBin2Prg ' + This.c_FB2PRG_EXE_Version + ': ' + loLang.C_FOXBIN2PRG_WARN_CAPTION_LOC + ' (' + .c_Language + ')', 60000 )
lnCodError = 1 lnCodError = 1
Case Empty(tc_InputFile)
*-- (Ejemplo de sintaxis y uso)
*MESSAGEBOX( loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC, 0+64+4096, 'FoxBin2Prg ' + THIS.c_FB2PRG_EXE_Version + ': ' + loLang.C_FOXBIN2PRG_SYNTAX_INFO_LOC + ' (' + .c_Language + ')', 60000 )
loFrm_Main = Createobject('frm_main', This)
loFrm_Main.Show()
Read Events
lnCodError = 0
*!* Changed by: Lutz Scheffler 15.2.2021 *!* Changed by: Lutz Scheffler 15.2.2021
*!* change date="{^2021-02-15,18:44:00}" *!* change date="{^2021-02-15,18:44:00}"
* added option to create config files * added option to create config files
Case m.lcType=='-c' And Vartype( m.tc_InputFile )='C' Case m.lcType=='-t' And ( Vartype( m.tc_InputFile )='C' AND !EMPTY( m.tc_InputFile ) )
loLang = _Screen.o_FoxBin2Prg_Lang 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 )
Case m.lcType=='-t' And Vartype( m.tc_InputFile )='C'
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, 0h0D0A, 0h0D0A + '*'), 0h0D0A + '*' + 0h0D0A, 0h0D0A0D0A), m.tc_InputFile )
Case 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 )
*!* /Changed by: Lutz Scheffler 15.2.2021 *!* /Changed by: Lutz Scheffler 15.2.2021
*!* Changed by: Lutz Scheffler 07.3.2021 *!* Changed by: Lutz Scheffler 07.3.2021
*!* change date="{^2021-03-07,18:44:00}" *!* change date="{^2021-03-07,18:44:00}"
* added option to create config files with values * added option to create config files with values
Case m.lcType=='-C' And Vartype( m.tc_InputFile )='C' Case m.lcType=='-C'
Local; Local;
lcText As String,; lcText As String,;
lcValue As String,; lcValue As String,;
@@ -3500,9 +3482,10 @@ Define Class c_foxbin2prg As Session
laLines(1),; laLines(1),;
laOptions(m.lnOptions,3) laOptions(m.lnOptions,3)
loLang = _Screen.o_FoxBin2Prg_Lang tc_InputFile = IIF( Vartype( m.tc_InputFile )='C' AND !EMPTY( m.tc_InputFile ), m.tc_InputFile, 'FoxBin2Prg._cfg' )
lcText = Strtran( '*' + Strtran( m.loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg, 0h0D0A, 0h0D0A + '*'), 0h0D0A + '*' + 0h0D0A, 0h0D0A0D0A) loLang = _Screen.o_FoxBin2Prg_Lang
lnLines = Alines(laLines,m.lcText) lcText = Strtran( '*' + Strtran( m.loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg, 0h0D0A, 0h0D0A + '*'), 0h0D0A + '*' + 0h0D0A, 0h0D0A0D0A)
lnLines = Alines(laLines,m.lcText)
*now for each option *now for each option
laOptions(01,1) = "*ShowProgressbar:" && 0=Don't show, 1=Allways show, 2= Show only for multi-file processing laOptions(01,1) = "*ShowProgressbar:" && 0=Don't show, 1=Allways show, 2= Show only for multi-file processing
@@ -3666,7 +3649,7 @@ Define Class c_foxbin2prg As Session
Case m.laOptions( m.lnOption, 3 ) = 3 Case m.laOptions( m.lnOption, 3 ) = 3
lcReturn = Padr(' ' + Iif ( Evaluate( m.laOptions( m.lnOption, 2 )), '0', '1' ), Len(m.lcValue) + 1 ) lcReturn = Padr(' ' + Iif ( Evaluate( m.laOptions( m.lnOption, 2 )), '0', '1' ), Len(m.lcValue) + 1 )
OTHERWISE Otherwise
* not defined. loop * not defined. loop
Loop Loop
@@ -3693,6 +3676,14 @@ Define Class c_foxbin2prg As Session
*!* /Changed by: Lutz Scheffler 07.3.2021 *!* /Changed by: Lutz Scheffler 07.3.2021
Case Empty(tc_InputFile)
*-- (Ejemplo de sintaxis y uso)
*MESSAGEBOX( loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC, 0+64+4096, 'FoxBin2Prg ' + THIS.c_FB2PRG_EXE_Version + ': ' + loLang.C_FOXBIN2PRG_SYNTAX_INFO_LOC + ' (' + .c_Language + ')', 60000 )
loFrm_Main = Createobject('frm_main', This)
loFrm_Main.Show()
Read Events
lnCodError = 0
Otherwise Otherwise
*-- EJECUCIÓN NORMAL *-- EJECUCIÓN NORMAL
@@ -4536,7 +4527,7 @@ Define Class c_foxbin2prg As Session
*-- OPTIMIZACIÓN VC2/SC2: VERIFICO SI EL ARCHIVO BASE FUE PROCESADO PARA DESCARTAR REPROCESOS *-- OPTIMIZACIÓN VC2/SC2: VERIFICO SI EL ARCHIVO BASE FUE PROCESADO PARA DESCARTAR REPROCESOS
If Inlist(lcExtension,"SCX","VCX",.c_VC2,.c_SC2); If Inlist(lcExtension,"SCX","VCX",.c_VC2,.c_SC2);
AND (.n_UseClassPerFile > 0 And .l_RedirectClassPerFileToMain ; AND (.n_UseClassPerFile > 0 And .l_RedirectClassPerFileToMain ;
OR Not Empty(.c_ClassToConvert)) OR Not Empty(.c_ClassToConvert))
Do Case Do Case
@@ -4579,7 +4570,7 @@ Define Class c_foxbin2prg As Session
*-- OPTIMIZACIÓN DC2: VERIFICO SI EL ARCHIVO BASE FUE PROCESADO PARA DESCARTAR REPROCESOS *-- OPTIMIZACIÓN DC2: VERIFICO SI EL ARCHIVO BASE FUE PROCESADO PARA DESCARTAR REPROCESOS
If Inlist(lcExtension,"DBC",.c_DC2); If Inlist(lcExtension,"DBC",.c_DC2);
AND .n_UseFilesPerDBC > 0 And .l_RedirectFilePerDBCToMain; AND .n_UseFilesPerDBC > 0 And .l_RedirectFilePerDBCToMain;
AND .n_UseFilesPerDBC = 1 AND .n_UseFilesPerDBC = 1
If Occurs('.', Juststem(.c_InputFile)) = 0 Then If Occurs('.', Juststem(.c_InputFile)) = 0 Then
@@ -6772,8 +6763,8 @@ Define Class frm_main As Form
Thisform.Caption = 'FoxBin2Prg ' + _Screen.c_FB2PRG_EXE_Version + ' - ' + loLang.C_FOXBIN2PRG_SYNTAX_INFO_LOC Thisform.Caption = 'FoxBin2Prg ' + _Screen.c_FB2PRG_EXE_Version + ' - ' + loLang.C_FOXBIN2PRG_SYNTAX_INFO_LOC
Endif Endif
Thisform.edt_help.Value = loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC+0h0d0a+; Thisform.edt_help.Value = loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC+0h0D0A+;
STRTRAN(loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg,'&'+'&','')+0h0d0a+; STRTRAN(loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_cfg,'&'+'&','')+0h0D0A+;
loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg loLang.C_FOXBIN2PRG_SYNTAX_INFO_EXAMPLE_LOC_tab_cfg
Endif Endif
@@ -16304,9 +16295,9 @@ Define Class c_conversor_bin_a_prg As c_conversor_base
, loLang As CL_LANG Of 'FOXBIN2PRG.PRG' , loLang As CL_LANG Of 'FOXBIN2PRG.PRG'
*** DH 2021-03-04: handle cOutputFolder *** DH 2021-03-04: handle cOutputFolder
if not empty(This.cOutputFolder) If Not Empty(This.cOutputFolder)
tcOutputFile = forcepath(tcOutputFile, This.cOutputFolder) tcOutputFile = Forcepath(tcOutputFile, This.cOutputFolder)
endif not empty(This.cOutputFolder) Endif Not Empty(This.cOutputFolder)
*** DH 2021-03-04: end of new code *** DH 2021-03-04: end of new code
lcExpanded = Iif( '.' $ Juststem(tcOutputFile), 'X1', 'X0' ) lcExpanded = Iif( '.' $ Juststem(tcOutputFile), 'X1', 'X0' )
@@ -17228,18 +17219,18 @@ Define Class c_conversor_pjx_a_prg As c_conversor_bin_a_prg
*-- Generación del proyecto *-- Generación del proyecto
*** DH 2021-03-04: only output HomeDir if we're supposed to *** DH 2021-03-04: only output HomeDir if we're supposed to
if toFoxBin2Prg.n_HomeDir = 1 If toFoxBin2Prg.n_HomeDir = 1
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<C_BUILDPROJ_I>> <<C_BUILDPROJ_I>>
<<>>*<.HomeDir = <<loProject._HomeDir>> /> <<>>*<.HomeDir = <<loProject._HomeDir>> />
ENDTEXT ENDTEXT
else Else
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<C_BUILDPROJ_I>> <<C_BUILDPROJ_I>>
ENDTEXT ENDTEXT
endif toFoxBin2Prg.n_HomeDir = 1 Endif toFoxBin2Prg.n_HomeDir = 1
*** DH 2021-03-04: end of updated code *** DH 2021-03-04: end of updated code
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<>> <<>>
FOR EACH loProject IN _VFP.Projects FOXOBJECT FOR EACH loProject IN _VFP.Projects FOXOBJECT
<<>> loProject.Close() <<>> loProject.Close()
@@ -17798,18 +17789,18 @@ Define Class c_conversor_pjm_a_prg As c_conversor_bin_a_prg
*-- Generación del proyecto *-- Generación del proyecto
*** DH 2021-03-04: only output HomeDir if we're supposed to *** DH 2021-03-04: only output HomeDir if we're supposed to
if toFoxBin2Prg.n_HomeDir = 1 If toFoxBin2Prg.n_HomeDir = 1
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<C_BUILDPROJ_I>> <<C_BUILDPROJ_I>>
<<>>*<.HomeDir = <<loProject._HomeDir>> /> <<>>*<.HomeDir = <<loProject._HomeDir>> />
ENDTEXT ENDTEXT
else Else
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<C_BUILDPROJ_I>> <<C_BUILDPROJ_I>>
ENDTEXT ENDTEXT
endif toFoxBin2Prg.n_HomeDir = 1 Endif toFoxBin2Prg.n_HomeDir = 1
*** DH 2021-03-04: end of updated code *** DH 2021-03-04: end of updated code
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<>> <<>>
FOR EACH loProject IN _VFP.Projects FOXOBJECT FOR EACH loProject IN _VFP.Projects FOXOBJECT
<<>> loProject.Close() <<>> loProject.Close()
@@ -18325,7 +18316,6 @@ Define Class c_conversor_dbf_a_prg As c_conversor_bin_a_prg
Endif Endif
Endif Endif
* SF * SF
*SET STEP ON
Use (.c_InputFile) Shared Again Noupdate Alias TABLABIN Use (.c_InputFile) Shared Again Noupdate Alias TABLABIN
lnDataSessionID = toFoxBin2Prg.DataSessionId lnDataSessionID = toFoxBin2Prg.DataSessionId
.RestoreDBCEvents(loDBC, @llDBCEventsEnabled) .RestoreDBCEvents(loDBC, @llDBCEventsEnabled)
@@ -25027,10 +25017,6 @@ Define Class CL_DBF_TABLE As CL_CUS_BASE
*** DH 06/02/2014: passed variables to toText *** DH 06/02/2014: passed variables to toText
lcText = lcText + loFields.toText(@laFields, @lnFieldCount, @toFoxBin2Prg) lcText = lcText + loFields.toText(@laFields, @lnFieldCount, @toFoxBin2Prg)
*-- Indexes
loIndexes = This._Indexes
lcText = lcText + loIndexes.toText( '', '', tc_InputFile, @toFoxBin2Prg )
*-- If table CFG exists, use it for DBF-specific configuration. FDBOZZO. 2014/06/15 *-- If table CFG exists, use it for DBF-specific configuration. FDBOZZO. 2014/06/15
lnFileCount = toFoxBin2Prg.get_DBF_Configuration( Forceext(tc_InputFile, 'DBF'), @loDBF_CFG, .T. ) lnFileCount = toFoxBin2Prg.get_DBF_Configuration( Forceext(tc_InputFile, 'DBF'), @loDBF_CFG, .T. )
@@ -25051,6 +25037,21 @@ Define Class CL_DBF_TABLE As CL_CUS_BASE
Endcase Endcase
* Lutz Scheffler 18.03.2021 added handling DBF_IndexList:
If lnFileCount = 1
lc_DBF_IndexList = loDBF_CFG.DBF_IndexList
If Not Empty(lc_DBF_IndexList)
toFoxBin2Prg.writeLog(' > Using non structural index files: ' + lc_DBF_IndexList)
Endif
Endif
* Lutz Scheffler 18.03.2021 moved index to get Settings per DBF
*-- Indexes
loIndexes = This._Indexes
lcText = lcText + loIndexes.toText( '', '', tc_InputFile, @toFoxBin2Prg, lc_DBF_IndexList)
* /Lutz Scheffler 18.03.2021
* setting temporary order * setting temporary order
If llExportData Then If llExportData Then
If lnFileCount = 1 If lnFileCount = 1
@@ -25061,19 +25062,12 @@ Define Class CL_DBF_TABLE As CL_CUS_BASE
Index On &lc_DBF_Conversion_Order. To (lcIndexFile) Compact Index On &lc_DBF_Conversion_Order. To (lcIndexFile) Compact
toFoxBin2Prg.writeLog(' > Using Index order key: ' + lc_DBF_Conversion_Order) toFoxBin2Prg.writeLog(' > Using Index order key: ' + lc_DBF_Conversion_Order)
Endif Endif
* Lutz Scheffler 18.03.2021 * Lutz Scheffler 18.03.2021 added handling DBF_Conversion_Condition:
* added handling DBF_Conversion_Condition:
lc_DBF_Conversion_Condition = loDBF_CFG.DBF_Conversion_Condition lc_DBF_Conversion_Condition = loDBF_CFG.DBF_Conversion_Condition
If Not Empty(lc_DBF_Conversion_Condition) If Not Empty(lc_DBF_Conversion_Condition)
toFoxBin2Prg.writeLog(' > Using Conversion Condition: ' + lc_DBF_Conversion_Condition) toFoxBin2Prg.writeLog(' > Using Conversion Condition: ' + lc_DBF_Conversion_Condition)
Endif Endif
* /Lutz Scheffler 18.03.2021
* added handling DBF_IndexList:
lc_DBF_IndexList = loDBF_CFG.DBF_IndexList
If Not Empty(lc_DBF_IndexList)
toFoxBin2Prg.writeLog(' > Using non structural index files: ' + lc_DBF_IndexList)
Endif
* /Lutz Scheffler 18.03.2021;
Endif Endif
Endif Endif
@@ -25487,7 +25481,7 @@ Define Class CL_DBF_INDEXES As CL_COL_BASE
Endtry Endtry
Return llBloqueEncontrado Return llBloqueEncontrado
ENDPROC &&analyzeIndexFilesBlock Endproc &&analyzeIndexFilesBlock
Procedure analyzeIndexFileBlock Procedure analyzeIndexFileBlock
@@ -25507,9 +25501,8 @@ Define Class CL_DBF_INDEXES As CL_COL_BASE
If Left(tcLine, Len(C_CDX_I)) == C_CDX_I If Left(tcLine, Len(C_CDX_I)) == C_CDX_I
llBloqueEncontrado = .T. llBloqueEncontrado = .T.
lcFile = STREXTRACT(m.tcLine,C_CDX_File_,'"',1) lcFile = Strextract(m.tcLine,C_CDX_File_,'"',1)
llStandAlone = STREXTRACT(m.tcLine,C_CDX_Type_,'"',1) == C_CDX_File_IDX llStandAlone = Strextract(m.tcLine,C_CDX_Type_,'"',1) == C_CDX_Type_IDX
With This As CL_DBF_INDEXES Of 'FOXBIN2PRG.PRG' With This As CL_DBF_INDEXES Of 'FOXBIN2PRG.PRG'
For I = m.I + 1 To tnCodeLines For I = m.I + 1 To tnCodeLines
.set_Line( @tcLine, @taCodeLines, m.I ) .set_Line( @tcLine, @taCodeLines, m.I )
@@ -25544,7 +25537,7 @@ Define Class CL_DBF_INDEXES As CL_COL_BASE
Endtry Endtry
Return llBloqueEncontrado Return llBloqueEncontrado
ENDPROC &&analyzeIndexFileBlock Endproc &&analyzeIndexFileBlock
* /SF * /SF
Procedure analyzeCodeBlock Procedure analyzeCodeBlock
@@ -25614,8 +25607,9 @@ Define Class CL_DBF_INDEXES As CL_COL_BASE
* tnTagInfo_Count (@? OUT) Cantidad de índices * tnTagInfo_Count (@? OUT) Cantidad de índices
* tc_InputFile (v! IN ) Archivo de entrada (el DBF) * tc_InputFile (v! IN ) Archivo de entrada (el DBF)
* toFoxBin2Prg (@! IN ) Referencia de toFoxBin2Prg * toFoxBin2Prg (@! IN ) Referencia de toFoxBin2Prg
* tc_DBF_IndexList (? IN ) comm a delimited list of non structuiral index files
*--------------------------------------------------------------------------------------------------- *---------------------------------------------------------------------------------------------------
Lparameters taTagInfo, tnTagInfo_Count, tc_InputFile, toFoxBin2Prg Lparameters taTagInfo, tnTagInfo_Count, tc_InputFile, toFoxBin2Prg, tc_DBF_IndexList
#If .F. #If .F.
Local toFoxBin2Prg As c_foxbin2prg Of 'FOXBIN2PRG.PRG' Local toFoxBin2Prg As c_foxbin2prg Of 'FOXBIN2PRG.PRG'
@@ -25655,27 +25649,41 @@ Define Class CL_DBF_INDEXES As CL_COL_BASE
lcText As String,; lcText As String,;
loIndex As "CL_DBF_INDEX" loIndex As "CL_DBF_INDEX"
LOCAL Array; Local Array;
taTagInfo (1,6) taTagInfo (1,6)
Local; Local;
lcFile As String,; lcIndexFile As String,;
lcType As String lcIndexType As String
toFoxBin2Prg.writeLog( Replicate('-', 100) ) toFoxBin2Prg.writeLog( Replicate('+', 100) )
toFoxBin2Prg.writeLog( ' Processing index tags' ) toFoxBin2Prg.writeLog( ' Processing index tags' )
1=''
*parse out idx from extra sorting
If Tagcount() > 0 *!* Changed by: SF 18.3.2021
toFoxBin2Prg.writeLog( Replicate('-', 100) ) *!* <pdm>
toFoxBin2Prg.writeLog( ' Structural' ) *!* <change date="{^2021-03-18,10:34:00}">Changed by: SF<br />
Text To m.lcText Additive Textmerge Noshow Flags 1+2 Pretext 1+2 *!* Standalone index <em>tc_InputFile.IDX</em> will be included if <em>DBF_Conversion_Order</em> is activated
*!* use only tags of structural compound index file
*!* </change>
*!* </pdm>
lcIndexFile = Juststem( Dbf() ) + '.CDX'
* If Tagcount() > 0
If Tagcount( m.lcIndexFile ) > 0
lcIndexType = C_CDX_Type_Struct
toFoxBin2Prg.writeLog( ' ' + Replicate('-', 98) )
toFoxBin2Prg.writeLog( ' ' + m.lcIndexType )
TEXT To m.lcText Additive Textmerge Noshow Flags 1+2 Pretext 1+2
<<>> <<>>
<<>> <<C_CDX_I>> <<C_CDX_Type_>><<C_CDX_Type_Struct>>" > <<>> <<C_CDX_I>> <<C_CDX_Type_>><<m.lcIndexType>>" >
<<>> <<>>
<<>> <<C_INDEXES_I>> <<>> <<C_INDEXES_I>>
ENDTEXT ENDTEXT
tnTagInfo_Count = Ataginfo( taTagInfo ) * tnTagInfo_Count = Ataginfo( taTagInfo )
tnTagInfo_Count = Ataginfo( taTagInfo, m.lcIndexFile )
*!* /Changed by: SF 18.3.2021
Asort( m.taTagInfo, 1, -1, 0, 1 ) Asort( m.taTagInfo, 1, -1, 0, 1 )
loIndex = Createobject("CL_DBF_INDEX") loIndex = Createobject("CL_DBF_INDEX")
@@ -25683,76 +25691,85 @@ Define Class CL_DBF_INDEXES As CL_COL_BASE
lcText = m.lcText + m.loIndex.toText( @taTagInfo, m.I ) lcText = m.lcText + m.loIndex.toText( @taTagInfo, m.I )
Endfor Endfor
Text To m.lcText Additive Textmerge Noshow Flags 1+2 Pretext 1+2 TEXT To m.lcText Additive Textmerge Noshow Flags 1+2 Pretext 1+2
<<>> <<C_INDEXES_F>> <<>> <<C_INDEXES_F>>
<<>> <<C_CDX_F>> <<>> <<C_CDX_F>>
<<>> <<>>
ENDTEXT ENDTEXT
Endif Endif
*!* IF ! EMPTY(toFoxBin2Prg.a_InputFiles) THEN If ! Empty( m.tc_DBF_IndexList ) And Vartype( m.tc_DBF_IndexList ) = 'C' Then
*!* toFoxBin2Prg.writeLog( ' ' + Replicate('-', 98) ) Local Array;
*!* toFoxBin2Prg.writeLog( ' Additional files' ) laIndexFiles( 1 )
*!* FOR EACH lcFile IN toFoxBin2Prg.a_InputFiles
*!* Try
*!* lcFile = SYS(2014, ''+m.lcFile, ADDBS(JUSTPATH(tc_InputFile) ) )
*!* lcType = SUBSTR(FILETOSTR(m.lcFile),5,4)
*!* lcType = IIF( m.lcType = 0hFFFFFFFF, C_CDX_Type_IDX, C_CDX_Type_Compound )
*!* toFoxBin2Prg.writeLog( ' '+m.lcType + ' ' + m.lcFile )
*!* SET INDEX TO ( m.lcFile )
*!* If TAGCOUNT( m.lcFile ) > 0 THEN
*!* lnTagInfo_Count = Ataginfo( taTagInfo , m.lcFile )
*!* TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
*!* <<>>
*!* <<>> <<C_CDX_I>> <<C_CDX_Type_>><<m.lcType+'"'>> <<C_CDX_File_>><<m.lcFile+'"'>> >
*!* <<>>
*!* <<>> <<C_INDEXES_I>>
*!* ENDTEXT
*!* lnTagInfo_Count = Ataginfo( laTagInfo , m.lcFile) toFoxBin2Prg.writeLog( ' ' + Replicate('-', 98) )
*!* Asort( laTagInfo, 1, -1, 0, 1 ) toF1oxBin2Prg.writeLog( ' Additional index files' )
*!* loIndex = Createobject("CL_DBF_INDEX") toFoxBin2Prg.writeLog( ' ' + Replicate('- ', 49) )
*!* For I = 1 To lnTagInfo_Count *Additional index files
*!* lcText = lcText + loIndex.toText( @laTagInfo, m.I ) Alines( laIndexFiles, m.tc_DBF_IndexList ,5 , ',' )
*!* Endfor For Each lcIndexFile In laIndexFiles
Try
lcIndexFile = Sys(2014, ''+m.lcIndexFile, Addbs(Justpath(tc_InputFile) ) )
lcIndexType = Substr(Filetostr(m.lcIndexFile),5,4)
lcIndexType = Iif( m.lcIndexType = 0hFFFFFFFF, C_CDX_Type_IDX, C_CDX_Type_Compound )
toFoxBin2Prg.writeLog( ' '+m.lcIndexType + ' ' + m.lcIndexFile )
Set Index To ( m.lcIndexFile )
If Tagcount( m.lcIndexFile ) > 0 Then
lnTagInfo_Count = Ataginfo( taTagInfo , m.lcIndexFile )
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<>>
<<>> <<C_CDX_I>> <<C_CDX_Type_>><<m.lcIndexType+'"'>> <<C_CDX_File_>><<m.lcIndexFile+'"'>> >
<<>>
<<>> <<C_INDEXES_I>>
ENDTEXT
*!* TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 lnTagInfo_Count = Ataginfo( laTagInfo , m.lcIndexFile)
*!* <<>> <<C_INDEXES_F>> Asort( laTagInfo, 1, -1, 0, 1 )
*!* <<>> <<C_CDX_F>> loIndex = Createobject("CL_DBF_INDEX")
*!* <<>>
*!* ENDTEXT
*!* ENDIF &&TAGCOUNT( m.lcFile ) > 0
*!* Catch To m.loEx When m.loEx.ErrorNo = 1 For I = 1 To lnTagInfo_Count
*!* *File Not found lcText = lcText + loIndex.toText( @laTagInfo, m.I )
*!* toFoxBin2Prg.writeLog( ' Not a File ' + m.lcFile) Endfor
*!* Catch To m.loEx When m.loEx.ErrorNo=114 TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
*!* *INDEX does not match <<>> <<C_INDEXES_F>>
*!* toFoxBin2Prg.writeLog( ' Index does not match table ' + m.lcFile) <<>> <<C_CDX_F>>
<<>>
ENDTEXT
Endif &&TAGCOUNT( m.lcIndexFile ) > 0
*!* Catch To m.loEx Catch To m.loEx When m.loEx.ErrorNo = 1
*!* If This.n_Debug > 0 And _vfp.StartMode = 0 *File Not found
*!* Set Step On toFoxBin2Prg.writeLog( ' Not a File ' + m.lcIndexFile)
*!* Endif
*!*
*!* Throw
*!*
*!* Finally
*!* Store Null To m.loIndex
*!* Release I, m.loIndex
*!*
*!* Endtry
*!* ENDFOR &&lcFile
*!* ENDIF &&! EMPTY(toFoxBin2Prg.a_InputFiles)
IF !EMPTY(m.lcText) THEN Catch To m.loEx When m.loEx.ErrorNo=114
*INDEX does not match
toFoxBin2Prg.writeLog( ' Index does not match table ' + m.lcIndexFile)
Catch To m.loEx
If This.n_Debug > 0 And _vfp.StartMode = 0
Set Step On
Endif
Throw
Finally
Store Null To m.loIndex
Release I, m.loIndex
Endtry
Endfor &&lcIndexFile
Endif &&! EMPTY(toFoxBin2Prg.a_InputFiles)
If !Empty(m.lcText) Then
TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<>> <<C_CDXIDX_I>><<m.lcText>> <<>> <<C_CDXIDX_I>><<m.lcText>>
<<>> <<C_CDXIDX_F>> <<>> <<C_CDXIDX_F>>
ENDTEXT ENDTEXT
ENDIF &&!EMPTY(m.lcText) Endif &&!EMPTY(m.lcText)
toFoxBin2Prg.writeLog( Replicate('+', 100)+0h0D0A )
* /SF * /SF
Catch To loEx Catch To loEx
@@ -25822,7 +25839,7 @@ Define Class CL_DBF_INDEX As CL_CUS_BASE
llBloqueEncontrado = .T. llBloqueEncontrado = .T.
With This As CL_DBF_INDEX Of 'FOXBIN2PRG.PRG' With This As CL_DBF_INDEX Of 'FOXBIN2PRG.PRG'
._IndexFile = EVL( m.tcIndexFile, '') ._IndexFile = Evl( m.tcIndexFile, '')
._StandAlone = m.tlStandAlone ._StandAlone = m.tlStandAlone
For I = m.I + 1 To tnCodeLines For I = m.I + 1 To tnCodeLines
@@ -26096,7 +26113,7 @@ Define Class CL_DBF_RECORDS As CL_COL_BASE
* for wharever reason, macro substitution failed * for wharever reason, macro substitution failed
* EVALUATE() should do * EVALUATE() should do
* Scan For &tc_DBF_Conversion_Condition. * Scan For &tc_DBF_Conversion_Condition.
Scan For EVALUATE(m.tc_DBF_Conversion_Condition) Scan For Evaluate(m.tc_DBF_Conversion_Condition)
*!* /Changed by: Lutz Scheffler 01.03.2021 *!* /Changed by: Lutz Scheffler 01.03.2021
I = m.I + 1 I = m.I + 1
@@ -29665,7 +29682,7 @@ Define Class CL_CFG As Custom
+ [<memberdata name="n_useclassperfile" display="n_UseClassPerFile"/>] ; + [<memberdata name="n_useclassperfile" display="n_UseClassPerFile"/>] ;
; && SF ; && SF
+ [<memberdata name="l_oldfilesperdbc" display="l_OldFilesPerDBC"/>] ; + [<memberdata name="l_oldfilesperdbc" display="l_OldFilesPerDBC"/>] ;
+ [<memberdata name="n_usefilesperdbc" display="n_UseFilesPerDBC"/>] ; + [<memberdata name="n_usefilesperdbc" display="n_UseFilesPerDBC"/>] ;
+ [<memberdata name="l_redirectfileperdbctomain" display="l_RedirectFilePerDBCToMain"/>] ; + [<memberdata name="l_redirectfileperdbctomain" display="l_RedirectFilePerDBCToMain"/>] ;
+ [<memberdata name="l_itemperdbccheck" display="l_ItemPerDBCCheck"/>] ; + [<memberdata name="l_itemperdbccheck" display="l_ItemPerDBCCheck"/>] ;
+ [<memberdata name="l_dbf_binchar_base64" display="l_DBF_BinChar_Base64"/>] ; + [<memberdata name="l_dbf_binchar_base64" display="l_DBF_BinChar_Base64"/>] ;
@@ -29720,7 +29737,7 @@ Define Class CL_CFG As Custom
* - splitt of DBC separated from VCX/SCX * - splitt of DBC separated from VCX/SCX
* - new operations of DBF * - new operations of DBF
*!* /Changed by: Lutz Scheffler 21.02.2021 *!* /Changed by: Lutz Scheffler 21.02.2021
l_OldFilesPerDBC = Null l_OldFilesPerDBC = Null
n_UseFilesPerDBC = Null n_UseFilesPerDBC = Null
l_RedirectFilePerDBCToMain = Null l_RedirectFilePerDBCToMain = Null
l_ItemPerDBCCheck = Null l_ItemPerDBCCheck = Null
@@ -29754,7 +29771,7 @@ Define Class CL_CFG As Custom
c_BackgroundImage = Null c_BackgroundImage = Null
n_PRG_Compat_Level = Null n_PRG_Compat_Level = Null
*** DH 2021-03-04: added n_HomeDir property *** DH 2021-03-04: added n_HomeDir property
n_HomeDir = NULL n_HomeDir = Null
Procedure CopyFrom Procedure CopyFrom
@@ -29786,7 +29803,7 @@ Define Class CL_CFG As Custom
* additional options controlling * additional options controlling
* - splitt of DBC separated from VCX/SCX * - splitt of DBC separated from VCX/SCX
* - new operations of DBF * - new operations of DBF
.l_OldFilesPerDBC = toParentCFG.l_OldFilesPerDBC .l_OldFilesPerDBC = toParentCFG.l_OldFilesPerDBC
.n_UseFilesPerDBC = toParentCFG.n_UseFilesPerDBC .n_UseFilesPerDBC = toParentCFG.n_UseFilesPerDBC
.l_RedirectFilePerDBCToMain = toParentCFG.l_RedirectFilePerDBCToMain .l_RedirectFilePerDBCToMain = toParentCFG.l_RedirectFilePerDBCToMain
.l_ItemPerDBCCheck = toParentCFG.l_ItemPerDBCCheck .l_ItemPerDBCCheck = toParentCFG.l_ItemPerDBCCheck
@@ -30020,13 +30037,15 @@ Define Class CL_LANG As Custom
<<>> <<>>
<<>>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <<>>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<<>> <<>>
<<>>FOXBIN2PRG.EXE [-c OutFileName] [-C OutFileName] [-t OutFileName] <<>>FOXBIN2PRG.EXE [-c|-C|-t [OutFileName]]
<<>> <<>>
<<>>-- Parameter details: <<>>-- Parameter details:
<<>>No parameter: Calls this info screen <<>>No parameter: Calls this info screen
<<>>-c creates a template config-file <OutFileName> (like FOXBIN2PRG.CFG) <<>>-c creates a template config-file <OutFileName> (like FOXBIN2PRG.CFG)
<<>>-C creates a config-file <OutFileName> (like FOXBIN2PRG.CFG) with current options of folder of <OutFileName> <<>>-C creates a config-file <OutFileName> (like FOXBIN2PRG.CFG) with current options of folder of <OutFileName>
<<>>-t creates a template table-config-file <OutFileName> (like <Tabellenname>.dbf.cfg) <<>> If OutFileName is not given a FoxBin2Prg._cfg config file will be created at default folder
<<>>-t creates a template table-config-file <OutFileName> (like <Tablename>.dbf.cfg)
<<>> If OutFileName is not given, and a table is open a <Tablename>.dbf._cfg config file will be created at table folder.
<<>> <<>>
<<>> <<>>
ENDTEXT ENDTEXT
@@ -30126,6 +30145,7 @@ Define Class CL_LANG As Custom
<<>>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) <<>>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)
<<>>DBF_Conversion_Order: <c_Expression> && Field expresion. ie: name+str(age,3) <<>>DBF_Conversion_Order: <c_Expression> && Field expresion. ie: name+str(age,3)
<<>>DBF_Conversion_Condition: <c_Expression> && Logical expression. ie: age > 10 AND NOT DELETED() <<>>DBF_Conversion_Condition: <c_Expression> && Logical expression. ie: age > 10 AND NOT DELETED()
<<>>DBF_IndexList: <cFile_List> && comma delimited list of additonal non structural index files, cdx or idx
<<>>DBF_BinChar_Base64: <0,1> && 0=For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform <<>>DBF_BinChar_Base64: <0,1> && 0=For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform
<<>>DBF_IncludeDeleted: <0,1> && 0=Do not include deleted records, 1=Include deleted records <<>>DBF_IncludeDeleted: <0,1> && 0=Do not include deleted records, 1=Include deleted records
<<>> <<>>
@@ -30247,13 +30267,15 @@ Define Class CL_LANG As Custom
<<>> <<>>
<<>>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <<>>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<<>> <<>>
<<>>FOXBIN2PRG.EXE [-c OutFileName] [-C OutFileName] [-t OutFileName] <<>>FOXBIN2PRG.EXE [-c|-C|-t [OutFileName]]
<<>> <<>>
<<>>-- Parameter details: <<>>-- Parameter details:
<<>>No parameter: Calls this info screen <<>>No parameter: Calls this info screen
<<>>-c creates a template config-file <OutFileName> (like FOXBIN2PRG.CFG) <<>>-c creates a template config-file <OutFileName> (like FOXBIN2PRG.CFG)
<<>>-C creates a config-file <OutFileName> (like FOXBIN2PRG.CFG) with current options of folder of <OutFileName> <<>>-C creates a config-file <OutFileName> (like FOXBIN2PRG.CFG) with current options of folder of <OutFileName>
<<>>-t creates a template table-config-file <OutFileName> (like <Tabellenname>.dbf.cfg) <<>> If OutFileName is not given a FoxBin2Prg._cfg config file will be created at default folder
<<>>-t creates a template table-config-file <OutFileName> (like <Tablename>.dbf.cfg)
<<>> If OutFileName is not given, and a table is open a <Tablename>.dbf._cfg config file will be created at table folder.
<<>> <<>>
ENDTEXT ENDTEXT
*** DH 2021-03-04: added HomeDir to text *** DH 2021-03-04: added HomeDir to text
@@ -30352,6 +30374,7 @@ Define Class CL_LANG As Custom
<<>>DBF_Conversion_Support: <1,2,4,8> && Ver esta misma configuración más arriba <<>>DBF_Conversion_Support: <1,2,4,8> && Ver esta misma configuración más arriba
<<>>DBF_Conversion_Order: <c_Expression> && Expresión de campo. ej: nombre+str(edad,3) <<>>DBF_Conversion_Order: <c_Expression> && Expresión de campo. ej: nombre+str(edad,3)
<<>>DBF_Conversion_Condition: <c_Expression> && Expresión lógica. ej: edad > 10 AND NOT DELETED() <<>>DBF_Conversion_Condition: <c_Expression> && Expresión lógica. ej: edad > 10 AND NOT DELETED()
<<>>DBF_IndexList: <cFile_List> && comma delimited list of additonal non structural index files, cdx or idx
<<>>DBF_BinChar_Base64: <0,1> && 0=For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform <<>>DBF_BinChar_Base64: <0,1> && 0=For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform
<<>>DBF_IncludeDeleted: <0,1> && 0=Do not include deleted records, 1=Include deleted records <<>>DBF_IncludeDeleted: <0,1> && 0=Do not include deleted records, 1=Include deleted records
<<>> <<>>
@@ -30472,13 +30495,16 @@ Define Class CL_LANG As Custom
<<>>cOutputFolder: Der Ordner in die die Ausgabedatei geschrieben werden soll. Wenn nicht angegeben, das Verzeichnis der Quelle. <<>>cOutputFolder: Der Ordner in die die Ausgabedatei geschrieben werden soll. Wenn nicht angegeben, das Verzeichnis der Quelle.
<<>>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <<>>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<<>> <<>>
<<>>FOXBIN2PRG.EXE [-c OutFileName] [-C OutFileName] [-t OutFileName] <<>>FOXBIN2PRG.EXE [-c|-C|-t [OutFileName]]
<<>> <<>>
<<>>-- Parameter: <<>>-- Parameter:
<<>>Keine Parameter: Startet dieses Formular <<>>Keine Parameter: Startet dieses Formular
<<>>-c Erzeugt eine Vorlage <OutFileName> für eine Config-Datei (wie FOXBIN2PRG.CFG) <<>>-c Erzeugt eine Vorlage <OutFileName> für eine Config-Datei (wie FOXBIN2PRG.CFG)
<<>>-C Erzeugt eine Config-Datei <OutFileName> (wie FOXBIN2PRG.CFG) mit den aktuellen Optionen des Pfades von <OutFileName> <<>>-C Erzeugt eine Config-Datei <OutFileName> (wie FOXBIN2PRG.CFG) mit den aktuellen Optionen des Pfades von <OutFileName>
<<>> Wird OutFileName nicht angegeben, so wird eine Konfigurationsdatei FoxBin2Prg._cfg angelegt.
<<>>-t Erzeugt eine Vorlage <OutFileName> für eine Tabellen-Config-Datei (wie <Tabellenname>.dbf.cfg) <<>>-t Erzeugt eine Vorlage <OutFileName> für eine Tabellen-Config-Datei (wie <Tabellenname>.dbf.cfg)
<<>> Wird OutFileName nicht angegeben und ist eine Tabelle offen,
<<>> so wird eine Konfigurationsdatei <Tabellenname>.dbf._cfg im Verzeichnis der Tabelle angelegt.
<<>> <<>>
ENDTEXT ENDTEXT
*** DH 2021-03-04: added HomeDir to text *** DH 2021-03-04: added HomeDir to text
@@ -30489,7 +30515,7 @@ Define Class CL_LANG As Custom
<<>>Version: <<_Screen.c_FB2PRG_EXE_Version>> <<>>Version: <<_Screen.c_FB2PRG_EXE_Version>>
<<>>**************************************************************************************************************** <<>>****************************************************************************************************************
<<>> <<>>
<<>> Achtung, die Konfigurationsdatein werden vererbt. <<>> Achtung, die Konfigurationsdateien werden vererbt.
<<>> 1. Defaultwerte <<>> 1. Defaultwerte
<<>> 2., optional FOXBIN2PRG.CFG im Vereichnis aus dem FOXBIN2PRG.EXE startet <<>> 2., optional FOXBIN2PRG.CFG im Vereichnis aus dem FOXBIN2PRG.EXE startet
<<>> 3., optional FOXBIN2PRG.CFG in der Wurzel des Arbeitsverzeichnises <<>> 3., optional FOXBIN2PRG.CFG in der Wurzel des Arbeitsverzeichnises
@@ -30609,6 +30635,7 @@ Define Class CL_LANG As Custom
<<>> && leer: normale Reihenfolge <<>> && leer: normale Reihenfolge
<<>>DBF_Conversion_Condition: <c_Expression> && Optional, Ausdruck für SELECT FOR. ie: age > 10 AND NOT DELETED() <<>>DBF_Conversion_Condition: <c_Expression> && Optional, Ausdruck für SELECT FOR. ie: age > 10 AND NOT DELETED()
<<>> && leer: Alle, außer DBF_IncludeDeleted <<>> && leer: Alle, außer DBF_IncludeDeleted
<<>>DBF_IndexList: <cFile_List> && 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 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() <<>> && Dies entspricht dem Flag 4096 in CursorToXML()
<<>> && Diese Option kann auch per Tabelle gesetzt werden. <<>> && Diese Option kann auch per Tabelle gesetzt werden.
@@ -30733,13 +30760,15 @@ Define Class CL_LANG As Custom
<<>> <<>>
<<>>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <<>>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<<>> <<>>
<<>>FOXBIN2PRG.EXE [-c OutFileName] [-C OutFileName] [-t OutFileName] <<>>FOXBIN2PRG.EXE [-c|-C|-t [OutFileName]]
<<>> <<>>
<<>>-- Parameter details: <<>>-- Parameter details:
<<>>No parameter: Calls this info screen <<>>No parameter: Calls this info screen
<<>>-c creates a template config-file <OutFileName> (like FOXBIN2PRG.CFG) <<>>-c creates a template config-file <OutFileName> (like FOXBIN2PRG.CFG)
<<>>-C creates a config-file <OutFileName> (like FOXBIN2PRG.CFG) with current options of folder of <OutFileName> <<>>-C creates a config-file <OutFileName> (like FOXBIN2PRG.CFG) with current options of folder of <OutFileName>
<<>>-t creates a template table-config-file <OutFileName> (like <Tabellenname>.dbf.cfg) <<>> If OutFileName is not given a FoxBin2Prg._cfg config file will be created at default folder
<<>>-t creates a template table-config-file <OutFileName> (like <Tablename>.dbf.cfg)
<<>> If OutFileName is not given, and a table is open a <Tablename>.dbf._cfg config file will be created at table folder.
<<>> <<>>
<<>> <<>>
ENDTEXT ENDTEXT
@@ -30839,6 +30868,7 @@ Define Class CL_LANG As Custom
<<>>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_Support: <0,1,2,4,8> && 0=No support, 1=Generate Header TXT only (Diff), 2=Generate Header TXT and BIN (Merge/Only Structure!), 4=Generate TXT with DATA (Diff), 8=Export and Import DATA (Merge/Structure & Data)
<<>>DBF_Conversion_Order: <c_Expression> && Field expresion. ie: name+str(age,3) <<>>DBF_Conversion_Order: <c_Expression> && Field expresion. ie: name+str(age,3)
<<>>DBF_Conversion_Condition: <c_Expression> && Logical expression. ie: age > 10 AND NOT DELETED() <<>>DBF_Conversion_Condition: <c_Expression> && Logical expression. ie: age > 10 AND NOT DELETED()
<<>>DBF_IndexList: <cFile_List> && comma delimited list of additonal non structural index files, cdx or idx
<<>>DBF_BinChar_Base64: <0,1> && 0=For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform <<>>DBF_BinChar_Base64: <0,1> && 0=For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform
<<>>DBF_IncludeDeleted: <0,1> && 0=Do not include deleted records, 1=Include deleted records <<>>DBF_IncludeDeleted: <0,1> && 0=Do not include deleted records, 1=Include deleted records
<<>> <<>>