diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 4ec1dda..1a911b8 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -10,7 +10,7 @@ assignees: ''
## ℹ Computer information
- VFP version:
-- GoFish version:
+- GoFish version: #.#.#
- Last GoFish version w/o bug (if available):
## 📠Provide detailed reproduction steps (if any)
diff --git a/FOXUSER_9.FPT b/FOXUSER_9.FPT
index 2f811ab..414287d 100644
Binary files a/FOXUSER_9.FPT and b/FOXUSER_9.FPT differ
diff --git a/FOXUSER_9.dbf b/FOXUSER_9.dbf
index 8b16331..033ee77 100644
Binary files a/FOXUSER_9.dbf and b/FOXUSER_9.dbf differ
diff --git a/Source/BuildGoFish.PRG b/Source/BuildGoFish.PRG
index 4cabd56..e5b36b7 100644
--- a/Source/BuildGoFish.PRG
+++ b/Source/BuildGoFish.PRG
@@ -17,7 +17,7 @@ Cd (lcSourceLoc)
*== Most of these local variables will make their way into BuildGoFish.h
lcVersion = '6.0'
-lcBuild = '005' && <---- Set your desired version level of the tool here
+lcBuild = '006' && <---- Set your desired version level of the tool here
&& This will be used on the GoFish form and will live on the
&& the _GoFish object that gets attached to _Screen at run time.
diff --git a/Source/BuildGoFish.h b/Source/BuildGoFish.h
index 08cd94f..c44270a 100644
--- a/Source/BuildGoFish.h
+++ b/Source/BuildGoFish.h
@@ -1,10 +1,10 @@
#DEFINE GOFISH_APP_NAME 'GoFish5'
#DEFINE GOFISH_APP_FILE 'GoFish5.app'
- #DEFINE GOFISH_VERSION '6.0.005'
- #DEFINE GOFISH_BUILDDATE '11. März 2023, '
- #DEFINE GOFISH_DBUILDDATE Date(2023,3, 11)
+ #DEFINE GOFISH_VERSION '6.0.006'
+ #DEFINE GOFISH_BUILDDATE '12. März 2023, '
+ #DEFINE GOFISH_DBUILDDATE Date(2023,3, 12)
#DEFINE GOFISH_DOWNLOAD_URL 'https://raw.githubusercontent.com/VFPX/GoFish/master/Source/Source.zip'
- #DEFINE GOFISH_VERSION_STRING_FOR_VERSION_FILE 'GoFish5 - 6.0.005 - 11. März 2023, - 20230311'
+ #DEFINE GOFISH_VERSION_STRING_FOR_VERSION_FILE 'GoFish5 - 6.0.006 - 12. März 2023, - 20230312'
#DEFINE THOR_TOOL_NAME 'Thor_Tool_GoFish5'
#DEFINE VERSON_FILE_URL 'https://github.com/VFPX/GoFish/_GoFishVersionFile.txt'
#DEFINE VERSION_LOCAL_FILE 'GoFishVersionFile.txt'
diff --git a/Source/Changelog_Thor.txt b/Source/Changelog_Thor.txt
index f2706eb..1e667bf 100644
--- a/Source/Changelog_Thor.txt
+++ b/Source/Changelog_Thor.txt
@@ -1,7 +1,19 @@
GoFish Change Log
+## Ver 6.0.006
+**Released 2023-03-12**
+### Changes
+- Fixed: Suppress error with odd ORDER BY from old version #53
+- Fixed: Check box *Whole Word* was not framed when non default value #7
+
+## Ver 6.0.005
+**Released 2023-03-11**
+### Changes
+- Improved: Screen to help with the duplicate issue #53
+ SET SAFETY ON to help to find the problem
+
## Ver 6.0.004 **Released 2023-03-11**
-- Improved: `SET SAFETY OFF` to circumvent a problem double copy. Until real fix.
+- Improved: `SET SAFETY OFF` to circumvent a problem with double copy. (issue #53) Until real fix.
## Ver 6.0.003 **Released 2023-03-10**
For more details check https://github.com/VFPX/GoFish/docs/Changes.md
diff --git a/Source/Forms/gofish_options.SCT b/Source/Forms/gofish_options.SCT
index 41995a6..9189301 100644
Binary files a/Source/Forms/gofish_options.SCT and b/Source/Forms/gofish_options.SCT differ
diff --git a/Source/Forms/gofish_options.gf_options.sc2 b/Source/Forms/gofish_options.gf_options.sc2
index 287ec8c..adc42cb 100644
--- a/Source/Forms/gofish_options.gf_options.sc2
+++ b/Source/Forms/gofish_options.gf_options.sc2
@@ -1393,7 +1393,7 @@ DEFINE CLASS gf_options AS gf_baseform OF "..\lib\gofishui.vcx"
ADD OBJECT 'pfSettings.pageColours.Label1' AS label WITH ;
BackStyle = 0, ;
- Caption = "Frame colour", ;
+ Caption = "Frame colour (Non default value)", ;
Height = 17, ;
Left = 21, ;
Name = "Label1", ;
@@ -2316,6 +2316,21 @@ DEFINE CLASS gf_options AS gf_baseform OF "..\lib\gofishui.vcx"
loContainerCheckBoxes = m.loPageframe.pageColumns.containerColumnCheckBoxes
lnContainerHeight = m.loContainerCheckBoxes.Height
+ *!* This.oForm.gaFields:
+ *!* (m.lnRow, 1) = controlsource
+ *!* (m.lnRow, 2) = Default column order
+ *!* (m.lnRow, 3) = Caption, if emptyas controlsource
+ *!* (m.lnRow, 4) = Usage:
+ *!* <0: only if dlDebug is .T., no column in the grid
+ *!* -2: Group "Control" in options control fields, not visible as default, only if dlDebug is .T.
+ *!* -1: Group "Debug" in options, not visible as default, only if dlDebug is .T.
+ *!* 0: Group "Default" in options, visible as default
+ *!* 1: Alternative group #1 in options, not visible as default
+ *!* 2: Alternative group #2 in options, not visible as default
+ *!* 3: Replace group disabled in options, visibility will switch with replace mode
+ *!* 4: Replace group enabled in options, not visible as default
+ *!* (m.lnRow, 5) = column.width
+
Local Array;
laFieldNames[This.oForm.oGrid.ColumnCount, 7]
diff --git a/Source/Forms/gofish_options.scx b/Source/Forms/gofish_options.scx
index 057f2c9..34b27a9 100644
Binary files a/Source/Forms/gofish_options.scx and b/Source/Forms/gofish_options.scx differ
diff --git a/Source/GoFish5.APP b/Source/GoFish5.APP
index 754c856..6690f78 100644
Binary files a/Source/GoFish5.APP and b/Source/GoFish5.APP differ
diff --git a/Source/GoFish5.PJT b/Source/GoFish5.PJT
index 0b4928b..ecfa888 100644
Binary files a/Source/GoFish5.PJT and b/Source/GoFish5.PJT differ
diff --git a/Source/GoFish5.pjx b/Source/GoFish5.pjx
index 1a96b3e..31139fa 100644
Binary files a/Source/GoFish5.pjx and b/Source/GoFish5.pjx differ
diff --git a/Source/Lib/gofishui.VCT b/Source/Lib/gofishui.VCT
index f7307a5..873854e 100644
Binary files a/Source/Lib/gofishui.VCT and b/Source/Lib/gofishui.VCT differ
diff --git a/Source/Lib/gofishui.gf_resultsform.vc2 b/Source/Lib/gofishui.gf_resultsform.vc2
index 953b801..c6217b1 100644
--- a/Source/Lib/gofishui.gf_resultsform.vc2
+++ b/Source/Lib/gofishui.gf_resultsform.vc2
@@ -77,7 +77,6 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
*< OBJECTDATA: ObjPath="ButtonContainer.cmdAdvanced" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="ButtonContainer.cmdOptions" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="ButtonContainer.Command1" UniqueID="" Timestamp="" />
- *< OBJECTDATA: ObjPath="ButtonContainer.chkMatchWholeWord" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="ButtonContainer.Container1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="ButtonContainer.Container1.chkApplyFilter" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="ButtonContainer.comboViewPosition" UniqueID="" Timestamp="" />
@@ -130,6 +129,7 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
*m: getlastsavedresultsfolder
*m: get_onodetag && Create object for node tag.
*m: get_replaceid && Determine the next ID to create a backup replace folder.
+ *m: get_resultorderby && Get the Order By clause for the reult cursor
*m: gridcolumnrightclick
*m: gridheaderrightclick
*m: lmaximizecodeview_assign
@@ -399,7 +399,7 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
ogrid = .NULL.
otree = .NULL.
owebcontrol = .NULL.
- Picture = ..\
+ Picture = ..\..\data\default\
ShowTips = .T.
TabStop = .T.
Top = -1
@@ -547,28 +547,6 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
Width = 89
*< END OBJECT: BaseClass="checkbox" />
- ADD OBJECT 'ButtonContainer.chkMatchWholeWord' AS checkbox WITH ;
- Alignment = 0, ;
- Anchor = 8, ;
- AutoSize = .T., ;
- BackStyle = 0, ;
- Caption = "\
-
ADD OBJECT 'ButtonContainer.chkSubdirectories' AS checkbox WITH ;
Alignment = 0, ;
Anchor = 8, ;
@@ -669,7 +647,7 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
Height = 24, ;
Left = 118, ;
Name = "comboViewPosition", ;
- Picture = ..\, ;
+ Picture = ..\..\data\default\, ;
Style = 2, ;
TabIndex = 24, ;
TabStop = .F., ;
@@ -844,7 +822,7 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
Left = 47, ;
Name = "comboSearchExpressionHistory", ;
nexpressionstostore = 50, ;
- Picture = ..\, ;
+ Picture = ..\..\data\default\, ;
TabIndex = 9, ;
TabStop = .F., ;
Top = 3, ;
@@ -858,7 +836,7 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
Height = 26, ;
Left = 446, ;
Name = "comboSearchExpressionHistoryDropDownArrow", ;
- Picture = ..\, ;
+ Picture = ..\..\data\default\, ;
TabIndex = 3, ;
TabStop = .F., ;
Top = 14, ;
@@ -873,7 +851,7 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
Left = 69, ;
Name = "comboSearchScopeHistory", ;
nexpressionstostore = 40, ;
- Picture = ..\, ;
+ Picture = ..\..\data\default\, ;
SelectOnEntry = .T., ;
TabIndex = 5, ;
Top = 31, ;
@@ -937,7 +915,7 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
Name = "oTreeView", ;
Top = 0, ;
Width = 186
- *< END OBJECT: BaseClass="olecontrol" OLEObject="c:\windows\syswow64\mscomctl.ocx" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7///8EAAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECetkzbU9kBAwAAAEACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABcAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAACABAAAAAAAABAAAAAIAAAD+////BQAAAP7///8GAAAABwAAAAgAAAD+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+2kEHHiYXREbFqAMDwKDYoIUM0EggAAAA5EwAABTUAALE8wWoBAAYAIgAAABkAAAARAgAACgAAAAEAAAAB782rXAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAACQAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5MzY4MjY1RS04NUZFLTExZDEtOEJFMy0wMDAwRjg3NTREQTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACADgAAAEhpZGVTZWxlY3Rpb24ABQAAAEwAAAAADAAAAEluZGVudGF0aW9uABEAAABODQAAAAcAAAAAAAAAAAAFAKDXxAAGAAAAAAAAAAUAAIC45xkAAQAAAFwAH97svQEABQAA6BkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANEAKAAAATGluZVN0eWxlAAkAAABJCgAAAAEAAAANAAAATW91c2VQb2ludGVyAAkAAABJCgAAAAAAAAAOAAAAUGF0aFNlcGFyYXRvcgAKAAAASAAAAAABAAAAXAYAAABTdHlsZQAJAAAASQoAAAAGAAAADAAAAE9MRURyYWdNb2RlAAkAAABJCgAAAAAAAAAMAAAAT0xFRHJvcE1vZGUACQAAAEkKAAAAAAAAAA4AAABGdWxsUm93U2VsZWN0AAUAAABMAQAAAAoAAABTaW5nbGVTZWwABQAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" />
+ *< END OBJECT: BaseClass="olecontrol" OLEObject="c:\windows\syswow64\mscomctl.ocx" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7///8EAAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBFZmDWVNkBAwAAAEACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABcAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAACABAAAAAAAABAAAAAIAAAD+////BQAAAP7///8GAAAABwAAAAgAAAD+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+2kEHHiYXREbFqAMDwKDYoIUM0EggAAAA5EwAABTUAALE8wWoBAAYAIgAAABkAAAARAgAACgAAAAEAAAAB782rXAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAACQAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5MzY4MjY1RS04NUZFLTExZDEtOEJFMy0wMDAwRjg3NTREQTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACADgAAAEhpZGVTZWxlY3Rpb24ABQAAAEwAAAAADAAAAEluZGVudGF0aW9uABEAAABODQAAAAcAAAAAAAAAAAAFAEiG5AAGAAAAAAAAAAUAAIA44BkAAQAAAFwAH97svQEABQCA4BkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANEAKAAAATGluZVN0eWxlAAkAAABJCgAAAAEAAAANAAAATW91c2VQb2ludGVyAAkAAABJCgAAAAAAAAAOAAAAUGF0aFNlcGFyYXRvcgAKAAAASAAAAAABAAAAXAYAAABTdHlsZQAJAAAASQoAAAAGAAAADAAAAE9MRURyYWdNb2RlAAkAAABJCgAAAAAAAAAMAAAAT0xFRHJvcE1vZGUACQAAAEkKAAAAAAAAAA4AAABGdWxsUm93U2VsZWN0AAUAAABMAQAAAAoAAABTaW5nbGVTZWwABQAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" />
ADD OBJECT 'containerRight' AS container WITH ;
Anchor = 15, ;
@@ -1628,7 +1606,7 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
FontSize = 8, ;
Left = 108, ;
Name = "comboViewPosition", ;
- Picture = ..\, ;
+ Picture = ..\..\data\default\, ;
Style = 2, ;
TabIndex = 24, ;
TabStop = .F., ;
@@ -3145,79 +3123,68 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
Local;
lcCollate As String,;
- lcField As String,;
lcOrderBy As String,;
lcSearchEngineResultsAlias As String,;
lcSearchResultsAlias As String,;
- lcSecondarySortField As String,;
- lcSecondarySortOrder As String,;
- lcSortField As String,;
- lcSortOrder As String,;
- lcTertiarySortField As String,;
- lcTertiarySortOrder As String,;
- lnSelect As Number,;
llReturn As Boolean,;
- loColumn As Object,;
+ lnSelect As Number,;
loException As Object
- Local Array;
- laFilter(1,2)
-
lcSearchEngineResultsAlias = Thisform.oSearchEngine.cSearchResultsAlias
lcSearchResultsAlias = Thisform.cSearchResultsAlias
lnSelect = Select()
- lcOrderBy = ""
+ *lcOrderBy = ""
llReturn = .T.
- *** JRN 11/06/2015 : using !Empty(Field( to provide for case of changed field names in GF 5
- *-- Construct Order By clause for Select statement from stored form property
- If !Empty(Thisform.cSortField) And !Empty(Field(Thisform.cSortField, m.lcSearchEngineResultsAlias))
- lcSortField = Thisform.cSortField
- lcSortOrder = Thisform.cSortOrder
- If (Empty(m.lcSortOrder) Or ("ASC" $ Upper(m.lcSortOrder)))
- lcSortOrder = "ASC"
- Endif
- lcOrderBy = m.lcSortField + " " + m.lcSortOrder
- Endif
-
- If !Empty(Thisform.cSortFieldSecondary) And !Empty(Field(Thisform.cSortFieldSecondary, m.lcSearchEngineResultsAlias))
- lcSecondarySortField = Thisform.cSortFieldSecondary
- lcSecondarySortOrder = Thisform.cSortOrderSecondary
- If (Empty(m.lcSecondarySortOrder) Or ("ASC" $ Upper(m.lcSecondarySortOrder)))
- lcSecondarySortOrder = "ASC"
- Endif
- lcOrderBy = m.lcOrderBy + ", " + m.lcSecondarySortField + " " + m.lcSecondarySortOrder
- Endif
+ *!* *** JRN 11/06/2015 : using !Empty(Field( to provide for case of changed field names in GF 5
+ *!* *-- Construct Order By clause for Select statement from stored form property
+ *!* If !Empty(Thisform.cSortField) And !Empty(Field(Thisform.cSortField, m.lcSearchEngineResultsAlias))
+ *!* lcSortField = Thisform.cSortField
+ *!* lcSortOrder = Thisform.cSortOrder
+ *!* If (Empty(m.lcSortOrder) Or ("ASC" $ Upper(m.lcSortOrder)))
+ *!* lcSortOrder = "ASC"
+ *!* Endif
+ *!* lcOrderBy = m.lcSortField + " " + m.lcSortOrder
+ *!* Endif
- If !Empty(Thisform.cSortFieldTertiary) And !Empty(Field(Thisform.cSortFieldTertiary, m.lcSearchEngineResultsAlias))
- lcTertiarySortField = Thisform.cSortFieldTertiary
- lcTertiarySortOrder = Thisform.cSortOrderTertiary
- If (Empty(m.lcTertiarySortOrder) Or ("ASC" $ Upper(m.lcTertiarySortOrder)))
- lcTertiarySortOrder = "ASC"
- Endif
- lcOrderBy = m.lcOrderBy + ", " + m.lcTertiarySortField + " " + m.lcTertiarySortOrder
- Endif
+ *!* If !Empty(Thisform.cSortFieldSecondary) And !Empty(Field(Thisform.cSortFieldSecondary, m.lcSearchEngineResultsAlias))
+ *!* lcSecondarySortField = Thisform.cSortFieldSecondary
+ *!* lcSecondarySortOrder = Thisform.cSortOrderSecondary
+ *!* If (Empty(m.lcSecondarySortOrder) Or ("ASC" $ Upper(m.lcSecondarySortOrder)))
+ *!* lcSecondarySortOrder = "ASC"
+ *!* Endif
+ *!* lcOrderBy = m.lcOrderBy + ", " + m.lcSecondarySortField + " " + m.lcSecondarySortOrder
+ *!* Endif
- If Empty(m.lcOrderBy)
- lcOrderBy = "filename, class, name, methodname"
- Thisform.cSortField = Getwordnum(m.lcOrderBy, 1, ",")
- Else
- lcOrderBy = Alltrim(m.lcOrderBy, 1, ",")
- Endif
+ *!* If !Empty(Thisform.cSortFieldTertiary) And !Empty(Field(Thisform.cSortFieldTertiary, m.lcSearchEngineResultsAlias))
+ *!* lcTertiarySortField = Thisform.cSortFieldTertiary
+ *!* lcTertiarySortOrder = Thisform.cSortOrderTertiary
+ *!* If (Empty(m.lcTertiarySortOrder) Or ("ASC" $ Upper(m.lcTertiarySortOrder)))
+ *!* lcTertiarySortOrder = "ASC"
+ *!* Endif
+ *!* lcOrderBy = m.lcOrderBy + ", " + m.lcTertiarySortField + " " + m.lcTertiarySortOrder
+ *!* Endif
- Thisform.cOrderBy = m.lcOrderBy
+ *!* If Empty(m.lcOrderBy)
+ *!* lcOrderBy = "filename, class, name, methodname"
+ *!* Thisform.cSortField = Getwordnum(m.lcOrderBy, 1, ",")
+ *!* Else
+ *!* lcOrderBy = Alltrim(m.lcOrderBy, 1, ",")
+ *!* Endif
- *-- Make header bold for primary sort column
- If Thisform.lInit
- For Each m.loColumn In Thisform.oGrid.Columns
- loColumn.header1.FontBold = .F.
- lcField = Getwordnum(m.loColumn.ControlSource, 2, ".")
- If Upper(m.lcField) = Upper(Getwordnum(m.lcOrderBy, 1, ", "))
- loColumn.header1.FontBold = .T.
- Endif
- Endfor
- Endif
+ *!* Thisform.cOrderBy = m.lcOrderBy
+
+ *!* *-- Make header bold for primary sort column
+ *!* If Thisform.lInit
+ *!* For Each m.loColumn In Thisform.oGrid.Columns
+ *!* loColumn.header1.FontBold = .F.
+ *!* lcField = Getwordnum(m.loColumn.ControlSource, 2, ".")
+ *!* If Upper(m.lcField) = Upper(Getwordnum(m.lcOrderBy, 1, ", "))
+ *!* loColumn.header1.FontBold = .T.
+ *!* Endif
+ *!* Endfor
+ *!* Endif
*-- This gives us case insensitive sorting...
lcCollate = Set("Collate")
@@ -3227,35 +3194,37 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
Endtry
- If !"filepath "$Lower(m.lcOrderBy) Then
- lcOrderBy = "filepath," + m.lcOrderBy
- Endif &&!"filepath "$Lower(m.lcOrderBy)
-
- If !Empty(Field("datetime",m.lcSearchEngineResultsAlias)) Then
- lcOrderBy = "datetime ," + m.lcOrderBy
- Endif &&!Empty(Field("datetime",m.lcSearchEngineResultsAlias))
-
- If !"filename "$Lower(m.lcOrderBy) Then
- lcOrderBy = m.lcOrderBy + ",filename "
- Endif &&!"filename "$Lower(m.lcOrderBy)
- If !"class "$Lower(m.lcOrderBy) Then
- lcOrderBy = m.lcOrderBy + ",class "
- Endif &&!"class "$Lower(m.lcOrderBy)
- If !"name "$Lower(m.lcOrderBy) Then
- lcOrderBy = m.lcOrderBy + ",name "
- Endif &&!"name "$Lower(m.lcOrderBy)
- If !"methodname "$Lower(m.lcOrderBy) Then
- lcOrderBy = m.lcOrderBy + ",methodname "
- Endif &&!"methodname "$Lower(m.lcOrderBy)
- If !"matchstart "$Lower(m.lcOrderBy) Then
- lcOrderBy = m.lcOrderBy + ",MatchStart "
- Endif &&!"matchstart "$Lower(m.lcOrderBy)
+ *!* If !"filepath "$Lower(m.lcOrderBy) Then
+ *!* lcOrderBy = "filepath," + m.lcOrderBy
+ *!* Endif &&!"filepath "$Lower(m.lcOrderBy)
+
+ *!* If !Empty(Field("datetime",m.lcSearchEngineResultsAlias)) Then
+ *!* lcOrderBy = "datetime ," + m.lcOrderBy
+ *!* Endif &&!Empty(Field("datetime",m.lcSearchEngineResultsAlias))
+
+ *!* If !"filename "$Lower(m.lcOrderBy) Then
+ *!* lcOrderBy = m.lcOrderBy + ",filename "
+ *!* Endif &&!"filename "$Lower(m.lcOrderBy)
+ *!* If !"class "$Lower(m.lcOrderBy) Then
+ *!* lcOrderBy = m.lcOrderBy + ",class "
+ *!* Endif &&!"class "$Lower(m.lcOrderBy)
+ *!* If !"name "$Lower(m.lcOrderBy) Then
+ *!* lcOrderBy = m.lcOrderBy + ",name "
+ *!* Endif &&!"name "$Lower(m.lcOrderBy)
+ *!* If !"methodname "$Lower(m.lcOrderBy) Then
+ *!* lcOrderBy = m.lcOrderBy + ",methodname "
+ *!* Endif &&!"methodname "$Lower(m.lcOrderBy)
+ *!* If !"matchstart "$Lower(m.lcOrderBy) Then
+ *!* lcOrderBy = m.lcOrderBy + ",MatchStart "
+ *!* Endif &&!"matchstart "$Lower(m.lcOrderBy)
+
+ lcOrderBy = This.Get_ResultOrderBy()
If Reccount(m.lcSearchEngineResultsAlias)=0 Then
tcUni = ""
Else &&RECCOUNT(m.lcSearchEngineResultsAlias)=0
Select (m.lcSearchEngineResultsAlias)
- GO BOTTOM
+ Go Bottom
tcUni = cUni
Endif &&RECCOUNT(m.lcSearchEngineResultsAlias)=0
@@ -3267,22 +3236,51 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
Order By &lcOrderBy) Source ;
Into Cursor (m.lcSearchResultsAlias) Readwrite
+ Try
+ *Was zu testen ist
+ Select *;
+ From (m.lcSearchEngineResultsAlias);
+ Into Cursor (m.lcSearchResultsAlias) Readwrite;
+ Order By &lcOrderBy
+
+
+ Catch To m.loException When m.loException.ErrorNo=1808
+ Messagebox("Error sorting, all sort fields reset to default",0,"GoFish")
+ * Error to catch, ORDER BY is invalid
+ * we asssume an odd field like memo is used
+ *reset the sort fields
+ Store "" To;
+ Thisform.cSortField,;
+ Thisform.cSortOrder,;
+ Thisform.cSortFieldSecondary,;
+ Thisform.cSortOrderSecondary,;
+ Thisform.cSortFieldTertiary,;
+ Thisform.cSortOrderTertiary
+ *Get OrderBy again
+ lcOrderBy = This.Get_ResultOrderBy()
+ *Rerun
Select *;
- From (m.lcSearchEngineResultsAlias);
- Into Cursor (m.lcSearchResultsAlias) Readwrite;
- Order By &lcOrderBy
+ From (m.lcSearchEngineResultsAlias);
+ Into Cursor (m.lcSearchResultsAlias) Readwrite;
+ Order By &lcOrderBy
+
+ Catch
+ Throw
+ Finally
+ *
+ Endtry
Else && Otherwise, Zap it and rebuild from GFSE cursor...
If m.tlAppend Then
Try
Update (m.lcSearchResultsAlias) Set;
- ReplaceRisk = 100
+ ReplaceRisk = 100
Insert Into (m.lcSearchEngineResultsAlias);
Select;
- Cur1.*;
- From (m.lcSearchResultsAlias) As Cur1
- Catch To loException
+ Cur1.*;
+ From (m.lcSearchResultsAlias) As Cur1
+ Catch To m.loException
Messagebox("Failure restoring old search.",0+64,"GoFish",10000)
llReturn = .F.
Endtry
@@ -3300,10 +3298,39 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
Order By &lcOrderBy) Source ;
Into Cursor gf_temp_csr Readwrite
- Select *;
- From (m.lcSearchEngineResultsAlias);
- Into Cursor gf_temp_csr Readwrite;
- Order By &lcOrderBy
+ Try
+ *Was zu testen ist
+ Select *;
+ From (m.lcSearchEngineResultsAlias);
+ Into Cursor gf_temp_csr Readwrite;
+ Order By &lcOrderBy
+
+
+ Catch To m.loException When m.loException.ErrorNo=1808
+ Messagebox("Error sorting, all sort fields reset to default",0,"GoFish")
+ * Error to catch, ORDER BY is invalid
+ * we asssume an odd field like memo is used
+ *reset the sort fields
+ Store "" To;
+ Thisform.cSortField,;
+ Thisform.cSortOrder,;
+ Thisform.cSortFieldSecondary,;
+ Thisform.cSortOrderSecondary,;
+ Thisform.cSortFieldTertiary,;
+ Thisform.cSortOrderTertiary
+ *Get OrderBy again
+ lcOrderBy = This.Get_ResultOrderBy()
+ *Rerun
+ Select *;
+ From (m.lcSearchEngineResultsAlias);
+ Into Cursor gf_temp_csr Readwrite;
+ Order By &lcOrderBy
+
+ Catch
+ Throw
+ Finally
+ *
+ Endtry
*-- Update local cursor in order that user has applied
*!* ******************** Removed 11/09/2015 *****************
@@ -3359,7 +3386,10 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
*-- This method provides basic grid formatting when form is first launched,
*-- then, in the Form.Init(), the user settings will be loaded, which will
*-- restore column width and column order based on usee's last sesssion.
+
+ *switch all Fields (.T.) on, else only a limited range is in options
#Define dlDebug .F.
+
Local;
lcControlSourceField As String,;
lcDynamicBackColor As String,;
@@ -3374,6 +3404,21 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
lnRow = 01
+ *!* laFields:
+ *!* (m.lnRow, 1) = controlsource
+ *!* (m.lnRow, 2) = Default column order
+ *!* (m.lnRow, 3) = Caption, if emptyas controlsource
+ *!* (m.lnRow, 4) = Usage:
+ *!* <0: only if dlDebug is .T., no column in the grid
+ *!* -2: Group "Control" in options control fields, not visible as default, only if dlDebug is .T.
+ *!* -1: Group "Debug" in options, not visible as default, only if dlDebug is .T.
+ *!* 0: Group "Default" in options, visible as default
+ *!* 1: Alternative group #1 in options, not visible as default
+ *!* 2: Alternative group #2 in options, not visible as default
+ *!* 3: Replace group disabled in options, visibility will switch with replace mode
+ *!* 4: Replace group enabled in options, not visible as default
+ *!* (m.lnRow, 5) = column.width
+
*default
laFields(m.lnRow, 1) = "FILENAME"
laFields(m.lnRow, 2) = 02
@@ -3518,9 +3563,9 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
lnRow = m.lnRow+1
laFields(m.lnRow, 1) = "TIMESTAMP"
laFields(m.lnRow, 2) = m.lnRow
- laFields(m.lnRow, 3) = ""
- laFields(m.lnRow, 4) = -1
- laFields(m.lnRow, 5) = 0
+ laFields(m.lnRow, 3) = "File/Record time stamp"
+ laFields(m.lnRow, 4) = 1
+ laFields(m.lnRow, 5) = 125
lnRow = m.lnRow+1
laFields(m.lnRow, 1) = "TYPE"
@@ -4033,6 +4078,95 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
ENDPROC
+ PROCEDURE get_resultorderby && Get the Order By clause for the reult cursor
+ Local;
+ lcField As String,;
+ lcOrderBy As String,;
+ lcSortField As String,;
+ lcSortOrder As String,;
+ loColumn As Object,;
+ lcSearchEngineResultsAlias As String
+
+ lcSearchEngineResultsAlias = Thisform.oSearchEngine.cSearchResultsAlias
+
+ lcOrderBy = ""
+
+ *** JRN 11/06/2015 : using !Empty(Field( to provide for case of changed field names in GF 5
+ *-- Construct Order By clause for Select statement from stored form property
+ If !Empty(Thisform.cSortField) And !Empty(Field(Thisform.cSortField, m.lcSearchEngineResultsAlias))
+ lcSortField = Thisform.cSortField
+ lcSortOrder = Thisform.cSortOrder
+ If (Empty(m.lcSortOrder) Or ("ASC" $ Upper(m.lcSortOrder)))
+ lcSortOrder = "ASC"
+ Endif
+ lcOrderBy = m.lcSortField + " " + m.lcSortOrder
+ Endif
+
+ If !Empty(Thisform.cSortFieldSecondary) And !Empty(Field(Thisform.cSortFieldSecondary, m.lcSearchEngineResultsAlias))
+ lcSortField = Thisform.cSortFieldSecondary
+ lcSortOrder = Thisform.cSortOrderSecondary
+ If (Empty(m.lcSortOrder) Or ("ASC" $ Upper(m.lcSortOrder)))
+ lcSortOrder = "ASC"
+ Endif
+ lcOrderBy = m.lcOrderBy + ", " + m.lcSortField + " " + m.lcSortOrder
+ Endif
+
+ If !Empty(Thisform.cSortFieldTertiary) And !Empty(Field(Thisform.cSortFieldTertiary, m.lcSearchEngineResultsAlias))
+ lcSortField = Thisform.cSortFieldTertiary
+ lcSortOrder = Thisform.cSortOrderTertiary
+ If (Empty(m.lcSortOrder) Or ("ASC" $ Upper(m.lcSortOrder)))
+ lcSortOrder = "ASC"
+ Endif
+ lcOrderBy = m.lcOrderBy + ", " + m.lcSortField + " " + m.lcSortOrder
+ Endif
+
+ If Empty(m.lcOrderBy)
+ lcOrderBy = "filename, class, name, methodname"
+ Thisform.cSortField = Getwordnum(m.lcOrderBy, 1, ",")
+ Else
+ lcOrderBy = Alltrim(m.lcOrderBy, 1, ",")
+ Endif
+
+ Thisform.cOrderBy = m.lcOrderBy
+
+ *-- Make header bold for primary sort column
+ If Thisform.lInit
+ For Each m.loColumn In Thisform.oGrid.Columns
+ loColumn.header1.FontBold = .F.
+ lcField = Getwordnum(m.loColumn.ControlSource, 2, ".")
+ If Upper(m.lcField) = Upper(Getwordnum(m.lcOrderBy, 1, ", "))
+ loColumn.header1.FontBold = .T.
+ Endif
+ Endfor
+ Endif
+
+ If !"filepath "$Lower(m.lcOrderBy) Then
+ lcOrderBy = "filepath," + m.lcOrderBy
+ Endif &&!"filepath "$Lower(m.lcOrderBy)
+
+ If !Empty(Field("datetime",m.lcSearchEngineResultsAlias)) Then
+ lcOrderBy = "datetime ," + m.lcOrderBy
+ Endif &&!Empty(Field("datetime",m.lcSearchEngineResultsAlias))
+
+ If !"filename "$Lower(m.lcOrderBy) Then
+ lcOrderBy = m.lcOrderBy + ",filename "
+ Endif &&!"filename "$Lower(m.lcOrderBy)
+ If !"class "$Lower(m.lcOrderBy) Then
+ lcOrderBy = m.lcOrderBy + ",class "
+ Endif &&!"class "$Lower(m.lcOrderBy)
+ If !"name "$Lower(m.lcOrderBy) Then
+ lcOrderBy = m.lcOrderBy + ",name "
+ Endif &&!"name "$Lower(m.lcOrderBy)
+ If !"methodname "$Lower(m.lcOrderBy) Then
+ lcOrderBy = m.lcOrderBy + ",methodname "
+ Endif &&!"methodname "$Lower(m.lcOrderBy)
+ If !"matchstart "$Lower(m.lcOrderBy) Then
+ lcOrderBy = m.lcOrderBy + ",MatchStart "
+ Endif &&!"matchstart "$Lower(m.lcOrderBy)
+
+ Return m.lcOrderBy
+ ENDPROC
+
PROCEDURE gridcolumnrightclick
Local;
lcChoice As String,;
@@ -9101,7 +9235,11 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
Endif
lcResultsGridHtmlCursor = "ResultsGridHtml"
- Select &lcFieldList From &lcCursor &lcFilter &lcOrderBy Into Cursor &lcResultsGridHtmlCursor Readwrite
+ Select &lcFieldList;
+ From &lcCursor;
+ &lcFilter;
+ &lcOrderBy;
+ Into Cursor &lcResultsGridHtmlCursor Readwrite
If "matchtype" $ Lower(lcFieldList)
Replace matchtype With Strtran(matchtype, "<", "") All
@@ -9176,14 +9314,6 @@ DEFINE CLASS gf_resultsform AS gf_baseform OF "gofishui.vcx"
ENDPROC
- PROCEDURE ButtonContainer.chkMatchWholeWord.Click
- Thisform.oSearchEngine.ClearReplaceSettings()
- ENDPROC
-
- PROCEDURE ButtonContainer.chkMatchWholeWord.Refresh
- This.Enabled = !Thisform.lSearching &&and !Thisform.lReplaceViewMode
- ENDPROC
-
PROCEDURE ButtonContainer.chkSubdirectories.Refresh
This.Enabled = !Thisform.lSearching && and !Thisform.lReplaceViewMode
diff --git a/Source/Lib/gofishui.vcx b/Source/Lib/gofishui.vcx
index 130d517..7ab0d18 100644
Binary files a/Source/Lib/gofishui.vcx and b/Source/Lib/gofishui.vcx differ
diff --git a/Source/Source.zip b/Source/Source.zip
index b85e696..821147a 100644
Binary files a/Source/Source.zip and b/Source/Source.zip differ
diff --git a/_GoFishVersionFile.txt b/_GoFishVersionFile.txt
index ff72988..1f1c19c 100644
--- a/_GoFishVersionFile.txt
+++ b/_GoFishVersionFile.txt
@@ -3,6 +3,21 @@ Lparameters toUpdateInfo
Text to lcNote NoShow
GoFish Change Log
+## Ver 6.0.006
+**Released 2023-03-12**
+ Changes
+- Fixed: Suppress error with odd ORDER BY from old version #53
+- Fixed: Check box *Whole Word* was not framed when non default value #7
+
+## Ver 6.0.005
+**Released 2023-03-11**
+ Changes
+- Improved: Screen to help with the duplicate issue #53
+ SET SAFETY ON to help to find the problem
+
+## Ver 6.0.004 **Released 2023-03-11**
+- Improved: `SET SAFETY OFF` to circumvent a problem with double copy. (issue #53) Until real fix.
+
## Ver 6.0.003 **Released 2023-03-10**
For more details check https://github.com/VFPX/GoFish/docs/Changes.md
- New: Mode to display history in tree
@@ -20,7 +35,7 @@ For more details check https://github.com/VFPX/GoFish/docs/Changes.md
EndText
-AddProperty(toUpdateInfo, 'AvailableVersion', 'GoFish5 - 6.0.003 - 10. März 2023, - 20230310')
+AddProperty(toUpdateInfo, 'AvailableVersion', 'GoFish5 - 6.0.006 - 12. März 2023, - 20230312')
AddProperty(toUpdateInfo, 'SourceFileUrl', 'https://raw.githubusercontent.com/VFPX/GoFish/master/Source/Source.zip')
AddProperty(toUpdateInfo, 'LinkPrompt', 'GoFish Home Page')
AddProperty(toUpdateInfo, 'Link', 'https://github.com/VFPX/GoFish')
diff --git a/_command.prg b/_command.prg
index aa1245f..e1cb62e 100644
--- a/_command.prg
+++ b/_command.prg
@@ -1 +1 @@
-MODIFY PROJECT e:\se\gofish_vfpx\source\gofish5.pjx
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
DEBUG
CLEAR ALL
RESUME
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
MODIFY CLASS gf_baseform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filterpf.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_options.scx
MODIFY CLASS gf_baseform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
DO e:\se\gofish_vfpx\source\buildgofish.prg
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
SELECT 0
USE "D:\Users\Lutz\AppData\Roaming\Microsoft\Visual FoxPro Advanced\GF_Saved_Search_Results\20221024082851\GF_Saved_Search_Results.DBF" AGAIN SHARED
BROWSE LAST
CD
CD .
CD ..
CD
CD e:\se\gofish_vfpx
CD
CD e:\se\gofish_vfpx\data\default
CD
MODIFY PROJECT e:\se\gofish_vfpx\source\gofish5.pjx
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
CLOSE ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
DEBUG
CLEAR ALL
CLOSE ALL
CLEAR ALL
CLEAR ALL
CLOSE ALL
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
CLEAR ALL
CLOSE ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
CLEAR ALL
CLOSE ALL
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
RESUME
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY COMMAND e:\se\gofish_vfpx\source\prg\gofishproc.prg AS 1252
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
MODIFY COMMAND e:\se\gofish_vfpx\source\prg\gofishproc.prg AS 1252
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_options.scx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
RESUME
PUBLIC pof
pof = m.locolumn
RESUME
CLEAR ALL
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
RESUME
CLEAR ALL
MODIFY CLASS gf_grid OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
RESUME
CLEAR ALL
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
RESUME
Cls
DO e:\se\gofish_vfpx\source\gofish5.app
RESUME
bublic pof
public pof
pof=m.locontrol
RESUME
CLEAR ALL
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
public pof
pof=m.locontrol
RESUME
release pof
RESUME
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
CLEAR
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
CLEAR
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY CLASS gf_grid OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_options.scx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
CLEAR ALL
DO e:\se\gofish_vfpx\source\buildgofish.prg:\se\gofish_vfpx\source\buildgofish.prg
DO e:\se\gofish_vfpx\source\buildgofish.prg
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
?VERSION()
?VERSION(1)
?VERSION(2)
?VERSION(3)
?VERSION(4)
_cliptext = VERSION(4)
MODIFY CLASS gf_combosearchexpressionhistory OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
DO e:\se\gofish_vfpx\source\gofish5.app
?FULLPATH()
?FULLPATH('','')
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_searchhistory.scx
MODIFY CLASS gf_baseform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_searchhistory.scx
MODIFY CLASS gf_baseform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_searchhistory.scx
MODIFY CLASS gf_baseform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_searchhistory.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_advaccedreplacehelp.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_about.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gf_collection_explorer.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_advanced.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_about.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_advaccedreplacehelp.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_advanced.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_advaccedreplacehelp.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_advanced.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_extendsearch.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filter.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filterpf.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_extendsearch.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_options.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_searchhistory.scx
MODIFY CLASS gf_filterform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY CLASS gf_baseform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_searchhistory.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_options.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_searchhistory.scx
CLEAR ALL
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_searchhistory.scx
MODIFY CLASS gf_baseform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_options.scx
MODIFY COMMAND e:\se\gofish_vfpx\source\gofish.prg AS 1252
MODIFY COMMAND e:\se\gofish_vfpx\source\prg\gofishproc.prg AS 1252
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
DEBUG
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
SET ASSERTS ON
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
CLOSE DATABASES all
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY COMMAND e:\se\gofish_vfpx\source\prg\gofishproc.prg AS 1252
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLOSE DATABASES all
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY CLASS gf_baseform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY CLASS gf_baseform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
RESUME
MODIFY CLASS gf_baseform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
DO e:\se\gofish_vfpx\source\buildgofish.prg
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
MODIFY FILE e:\se\gofish_vfpx\source\buildgofish.h AS 1252
DO e:\se\gofish_vfpx\source\buildgofish.prg
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
DO e:\se\gofish_vfpx\source\buildgofish.prg
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
MODIFY COMMAND e:\se\gofish_vfpx\source\samples\gofishsearchsample.prg AS 1252
MODIFY COMMAND e:\se\gofish_vfpx\source\lib\gofishsearchengine.prg AS 1252
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY COMMAND e:\se\gofish_vfpx\source\lib\gofishsearchengine.prg AS 1252
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY COMMAND e:\se\gofish_vfpx\source\lib\gofishsearchengine.prg AS 1252
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY COMMAND e:\se\gofish_vfpx\source\lib\gofishsearchengine.prg AS 1252
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
MODIFY COMMAND e:\se\gofish_vfpx\source\lib\gofishsearchengine.prg AS 1252
CLEAR ALL
MODIFY COMMAND e:\se\gofish_vfpx\source\lib\gofishsearchengine.prg AS 1252
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
CLEAR ALL
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
DO e:\se\gofish_vfpx\source\buildgofish.prg
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY COMMAND e:\se\gofish_vfpx\source\lib\gofishsearchengine.prg AS 1252
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
CLEAR ALL
DO e:\se\gofish_vfpx\source\buildgofish.prg
DO e:\se\gofish_vfpx\source\gofish5.app
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
CLOSE ALL
DEBUG
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filter.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filterpf.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filter.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filterpf.scx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
CLEAR ALL
DO e:\se\gofish_vfpx\source\buildgofish.prg
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filterpf.scx
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
EXIT
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY CLASS gf_baseform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
?FULLPATH("","")
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filter.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filterpf.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filter.scx
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filterpf.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filter.scx
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filter.scx
DO e:\se\gofish_vfpx\source\gofish5.app
DEBUG
RESUME
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filterpf.scx
MODIFY FORM e:\se\gofish_vfpx\source\forms\gofish_filter.scx
CLEAR ALL
SET DEFAULT TO e:\se\gofish_vfpx\source\
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
CLEAR ALL
DO e:\se\gofish_vfpx\source\buildgofish.prg
MODIFY COMMAND e:\se\gofish_vfpx\source\lib\gofishsearchengine.prg AS 1252
MODIFY FILE e:\se\gofish_vfpx\source\changelog_ver_5.txt AS 1252
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
CLEAR ALL
DO e:\se\gofish_vfpx\source\buildgofish.prg
CLEAR ALL
DO Browse_Ext
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
DO e:\se\gofish_vfpx\source\gofish5.app
CLEAR ALL
DO e:\se\gofish_vfpx\source\gofish5.app
MODIFY CLASS gf_resultsform OF e:\se\gofish_vfpx\source\lib\gofishui.vcx
MODIFY COMMAND e:\se\gofish_vfpx\source\buildgofish.prg AS 1252
?_vfp.proje.count
?_vfp.proje._cfg file, if table is open. |
-| | | | **Enhancement**: Handling of additional non structural index per DBF in Bin2Text and Text2Bin. See [Config per DBF](./FoxBin2Prg_Internals.md#configuration-per-table). |
-| | | | **Enhancement**: Debug-Logging for Index |
-| | | | **Bug Fix**: DBF_Conversion_Condition was read, but never used |
-| | | | **Bug Fix**: DBF_Conversion_Order sets an index that later would be stored as structural index |
-| | | | **Bug Fix**: config options with text value fail, if line comment is set |
-| | | | **Bug Fix**: issue #53 Variable lnFileCount in get_filesfromdirectory (msueping) |
-| 2021/03/09 | LScheffler | v1.19.59 | **Feature**: Logging of settings as settings object passed to execute method (Option debug > 0) |
-| | | | **Feature**: Added option to create config file template based on current values of a directory |
-| | | | **Bug Fix**: RedirectClassType = 2, Path was set wrong in special config |
-| | | | **Bug Fix**: RedirectClassType = 2, UseClassPerFile = 2 failed |
-| | | | **Doc**: Improved, Better description of ClassPerFileCheck, tcOutputFolder. |
-| 2021/03/04 | Doug Hennig | [v1.19.58](https://github.com/fdbozzo/foxbin2prg/releases/tag/v1.19.58) | **Feature**: Added support for writing to a different folder than the source code using a new tcOutputFolder parameter |
-| | | | **Feature**: Added a configuration option: HomeDir, which determines if HomeDir is saved in PJ2 files (the default is 1 for Yes) |
-| 2021/03/05 | LScheffler | v1.19.57 | **Bug Fix**: RedirectClassType = 2 mixed up PATH |
-| | | | **Doc**: Improved |
-| 2021/03/04 | LScheffler | v1.19.56 | **Feature**: New value 2 for option RedirectClassType = 2, just process the single class for input in form file[.baseclass].class.vc2 |
-| | | | **Bug Fix**:
Inputfile in form classlib.class.vc2 AND RedirectClassType = 1 and Execute param tcRecompile = 1
generates classlib.class.vcx and tries to recompile classlib.vcx
fails silent if classlib.vcx exists (compiles wrong lib), with message if not. |
-| 2021/03/03 | LScheffler | v1.19.55 | **Doc**: Documentation from CodePlex integrated |
-| | | | **Feature**: added option to create config file template |
-| | | | **Doc**: Info screen-doc improved |
-| | | | **Doc**: German translation improved |
-| 2021/03/03 | LScheffler | v1.19.54 | **Bug Fix**: DBF_Conversion_Condition, problem with macro expansion |
-| 2021/02/20 | LScheffler | | **Feature**: inserted option DBF_IncludeDeleted to allow including deleted records of DBF |
-| 2021/02/19 | LScheffler | | **Feature**: inserted option DBF_BinChar_Base64 to allow processing of NoCPTrans fields in non base64 way |
-| 2021/02/15 | LScheffler | | **Feature**: inserted option ItemPerDBCCheck to split DBC processing from vcx / scx |
-| | | | **Feature**: inserted option RedirectFilePerDBCToMain to split DBC processing from vcx / scx |
-| 2021/02/14 | LScheffler | | **Feature**: inserted option UseFilesPerDBC to split DBC processing from vcx / scx |
-| 2021/02/23 | LScheffler | v1.19.53 | **Doc**: For Info screen and config-template, usage of MEM and FRX added |
-| | | | **Bug Fix**: conversion prg -> vcx, files per class could create one class multiple times |
-| 2021/02/15 | | | **Bug Fix**: processing directory, flush log file after loop instead of file |
-| 2021/02/14 | LScheffler | v1.19.52 | **Bug Fix**: conversion prg -> dbf, fields with .NULL. value are incorectly recreated |
-| | | | **Doc**: minor translations |
-| | | | **Bug Fix**: conversion dbf -> prg, error if only test mode (toFoxBin2Prg.l_ProcessFiles is false) |
-| 2020/04/01 | FDBOZZO | [v1.19.51.6](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.51.6) | Add some fixes to existent ut_tests |
-| | | | **Bug Fix**: At least one of the class-per-file files do not have CR_LF at the end, then when assembling the class or form some structures (ENDIF/ENDCASE/ENDDEF/etc) can be joined with the next, making them erroneous (Ryan Harris) |
-| | | | **Bug Fix**: Incompatible with VFPA (#36) (Eric Selje) |
-| | | | **Bug Fix**: DBF conversion fails if some field name is a reserved keyword like UNIQUE (DAJU78) |
-| | | | **Bug Fix**: VCX/SCX properties named "note" are not properly converted (Tracy Pearson) |
-| | DH | | **Bug Fix**: Manejo de AutoIncrement incompatible con Project Explorer (Dan Lauer) [Fixed by Doug Hennig] |
-| 2019/02/24 | FDBOZZO | [v1.19.51.5](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.51.5) | **Feature**: Issue#32 Make FoxBin2Prg more COM friendly when using ESC key (Tracy Pearson) |
-| 2018/07/31 | FDBOZZO | [v1.19.51.4](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.51.4) | **Bug Fix**: Issue#26 The alphabetic ordering of ADD OBJECT's objects can cause that some objects be created in erroneous order, causing unexpected behavior (Jochen Kauz) |
-| 2018/07/09 | FDBOZZO | [v1.19.51.3](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.51.3) | **Bug Fix**: Error 1098, Cannot find ... [ENDT] that closes ... [TEXT] Issue#26 when there is a field named TEXT as first line-word (KIRIDES) |
-| 2018/06/20 | FDBOZZO | [v1.19.51.2](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.51.2) | **Bug Fix**: When converting to text a DBF that belongs to a DBC with events disabled, conversion fails (Jairo Argüelles / Juan C. Perdomo) |
-| 2018/05/12 | FDBOZZO | [v1.19.51.1](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.51.1) | **Bug Fix**: If capitalization is used on a DBC view info, then related information is not exported correctly or entirely, so could be lost (SkySurfer1) |
-| 2018/03/26 | FDBOZZO | [v1.19.51](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.51) | Add LOG info about config.fpw used and CodePage |
-| | | | Enhanced HELP dialog info when running FoxBin2Prg with double-click |
-| | | | **Feature**: FKY file structure support (MACRO file exporting only to text fk2) |
-| | | | **Feature**: MEM file structure support (MEMORY file exporting only to text me2) |
-| | | | **Feature**: Added automatic default language recognition for the supported ones (FR,DE,ES,EN) |
-| 2018/03/15 | FDBOZZO | [v1.19.50.3](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.50.3) | **Bug Fix**: When adding some non-VFP text files like html,css,etc, in the text section of the project, FoxBin2Prg does not keep this selection when regenerating the PJX, leaving them in the files section (Darko Kezic) |
-| 2018/03/13 | FDBOZZO | [v1.19.50.2](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.50.2) | **Bug Fix**: Regenerating pjm,"*" when CFG's extension:pj2=pjm does not regenerate all pjx included files (Darko Kezic) |
-| 2018/03/12 | FDBOZZO | [v1.19.50.1](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.50.1) | **Bug Fix**: When using the CFG configuration "extension: pj2=pjm" treat the pjm as pj2 and not as SourceSafe-compatible pjm (Darko Kezic) |
-| 2018/03/06 | FDBOZZO | [v1.19.50](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.50) | Added a new CFG "BodyDevInfo" switch to control the DevInfo body data of PJX. It is disabled by default because DevInfo normally have compiled data that can be regenerated and causes many differences on source control tools |
-| | | | New PRG_Compat_Level CFG value to make generated SC2/VC2 code more PRG compatible |
-| | | | **Bug Fix**: PJX homedir related fields do not always are sincronized |
-| | | | Workaround to export DBF metadata without the security part of the DBC blocking it, when DBCEvents are enabled. |
-| 2018/02/03 | FDBOZZO | [v1.19.49.8](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.49.8) | **Bug Fix**: When converting a VCX corrupted with duplicated objects to text, "The specified key already exists" error is thrown (Kirides) |
-| 2018/01/11 | FDBOZZO | [v1.19.49.7](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.49.7) | **Bug Fix**: When converting a DBF an error is thrown if there is a field called X or I (Francisco Prieto) |
-| 2018/01/04 | FDBOZZO | [v1.19.49.6](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.49.6) | **BugFix vcx/scx**: FoxBin2Prg should ignore the records that VFP Designer ignores (Doug Hennig / https://github.com/fdbozzo/foxbin2prg/issues/15) |
-| | | | **BugFix vcx/scx**: FoxBin2Prg encodes MemberData property with CR/LF, which can cause "property '_memberdata' value is too long" error (Doug Hennig / https://github.com/fdbozzo/foxbin2prg/issues/16) |
-| 2017/12/20 | FDBOZZO | [v1.19.49.5](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.49.5) | **BugFix DBF**: When FoxBin2PRG converts a DB2 file to a DBF file and imports the data (using DBF_Conversion_Support = 8), tabs at the start of lines in memo fields are lost (Doug Hennig / https://github.com/fdbozzo/foxbin2prg/issues/13) |
-| 2017/12/04 | FDBOZZO | [v1.19.49.4](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.49.4) | **Bug Fix VCX**: When using ClassPerFile in API Mode and importing single classes, sometimes their names get unquoted, throwing errors / Reported by Lutz Scheffler (https://github.com/fdbozzo/foxbin2prg/issues/11) |
-| 2017/12/03 | FDBOZZO | [v1.19.49.3](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.49.3) | **Bug Fix**: "Double" field types are explicitly defined with 0 decimals when no decimals are defined (Jerry Stager) |
-| 2017/12/03 | FDBOZZO | [v1.19.49.2](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.49.2) | **Bug Fix**: ClassPerFile export didn't work correctly starting from v1.19.49 / Reported by Lutz Scheffler (https://github.com/fdbozzo/foxbin2prg/issues/9) |
-| 2017/06/25 | FDBOZZO | [v1.19.49.1](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.49.1) | **Bug Fix**: DEVINFO field is only used when doing PJX conversions. On other files throw errors |
-| 2017/04/26 | FDBOZZO | [v1.19.49](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.49) | Replace Scripting.FileSystemObject MoveFile with Win32API equivalent |
-| | | | Added support for using temporal CFG file for low-level API operations |
-| | | | **Bug Fix**: Single-class export with "classlib.vcx::classname" syntax did not export (Lutz Scheffler) |
-| | | | Added single-class import support ("library.vcx::classname::import") |
-| | | | Added new single-class export syntax ("library.vcx::classname::export") |
-| | | | Both single-class syntaxes doesn't require a CFG configuration |
-| | | | **Bug Fix**: Partially corrupted frx/lbx info generated when using "&&" string inside field expressions (Alejandro A Sosa) |
-| | | | sys(2023) secure temp: When sys(2023) points to "program files", then getenv("temp") is used |
-| | | | Add more options to config.fpw to minimize interference from existent configs |
-| | | | **Feature**: Save the contents of User field (Doug Hennig). Note: DevInfo is already supported |
-| 2016/07/24 | FDBOZZO | [v1.19.48](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.48) | **Bug Fix**: ControlSource of OLE Objects containing quotes are not well regenerated from FR2 (Nathan Brown) |
-| | FDBOZZO | Preview-5 | **Bug Fix**: When a binary is regenerated from a PJ2 file containing files with parenthesis and spaces, the error "Error 36, Command contains unrecognized phrase/keyword" occurs (Nathan Brown) |
-| | FDBOZZO | Preview-4 | **Defect Fix**: When fixing the multi-line memo bug, introduced a new defect on which a single-line memo is not decoded correctly (Nathan Brown) |
-| | FDBOZZO | Preview-3 | **Bug Fix**: Bug Fix db2: When reading a miltuline-memo with old db2 data, an index out of range error occurs |
-| | FDBOZZO || **Bug Fix** db2: When using ExcludeDBFAutoincNextval: 1 setting in FoxBin2Prg.cfg and at the same time the data import with an AutoInc field, then error "Error 2088, Field is read-only" occurs (Nathan Brown) |
-|| FDBOZZO | Preview-2 | **Bug Fix**: DBF conversion restrictions are not always respected when using particular CFGs for DBFs (Nathan Brown) |
-|| AndyGK63 | Preview-1 | **Bug Fix**: Error message 'variable tcOutputFile not found' (german version) (Andy Kasper) |
-|| AndyGK63 || **Bug Fix**: Menu location 'Before' always changed to 'after' when convert (Andy Kasper) |
-| 2016/06/09 | FDBOZZO | [v1.19.47](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.47) | **Bug Fix**: Added multi-line support for memo data when importing/exporting |
-|| FDBOZZO || **Feature**: Added support for appending data from DB2 to DBF with the new value DBFConversionSupport=8. All datatypes except General. (Walter Nicholls) |
-|| DougHennig || **Bug Fix**: Added variable declaration in vbs scripy (Doug Hennig) |
-|| DougHennig || **Bug Fix**: Fixed incorrectly named variable in vbs script (Doug Hennig) |
-|| DougHennig || **Bug Fix**: Added missing assignment in vbs script (Doug Hennig) |
-|| DougHennig || **Enhancement**: Put double quotes around path in case in contains single quote in vbs scripts (Doug Hennig) |
-|| FDBOZZO || **Bug Fix**: Added "+16" to Debug flags to maintain internal defaults to not generate timestamps on xx2 files in vbs scripts |
-|| FDBOZZO || **Bug Fix**: When a filename "\*" is specified with a type "\*", an automatic regeneration of all binary files is made from text files (Alejandro Sosa) |
-| 2016/02/07 | FDBOZZO | [v1.19.46](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.46) | **Bug Fix**: set\_UserValue() method causes error when trying to get information about another error and the VFP binary table can not be opened (ie, because corrupted memo) |
-|||| **Feature**: Added internal support for querying directory cfg information, with a new optional parameter, for API methods that require it (ie: get\_Ext2FromExt, hasSupport\*) |
-|||| **Feature**: Convert FUNCTION to PROCEDURE for maintaining compatibility with the way that VFP save methods on binaries |
-|||| **New fb2p\_diff.exe**: Allow a quick Diff of VFP9 binaries, for those that don't need converting to text manually |
-|||| **Bug Fix**: When processing a directory or a project with all the files, sometimes an "Alias already in use" error may occur (Dave Crozier) |
-|||| **Bug Fix mnx**: When menu options contains '&&' in their texts, menu binary is corrupted when regenerated (Walter Nichols) |
-|||| **Bug Fix fb2p\_diff.exe**: When calling fb2p\_diff.exe from a directory out of FoxBin2Prg dir, an error is thrown because FoxBin2Prg is not found (Mike Potjer) |
-|||| **Feature**: In some environments and under some conditions WSscript.Shell object can cause problems, so now it's replaced with Win32 native functions (Aurélien Dellieux) |
-|||| **Bug Fix frx/lbx**: Ordering of report objects changes the ZOrder of near objects that can overlap, which can cause bad visualization and printing (Ryan Harris) |
-|||| **Bug Fix frx/lbx**: When regenerating reports or labels with multiline texts center or right aligned, alignment is not completely right (Ryan Harris) |
-|||| **Bug Fix frx/lbx**: When grouping objects in design mode, generating text and regenerating binary cause the lost of the grouping (does not affect data) (Lutz Scheffler) |
-|| RALFXWAGNER || **Bug Fix Pjx**: SPR and MPR files are not correctly identified in the PJX Project info (Ralf Wagner) |
-|||| **Bug Fix Pj2**: An error is thrown when regenerating a PJX from a PJ2 when some file have parenthesis in it's name (EddieC) |
-|||| **Feature (dbf)**: New ExcludeDBFAutoincNextval parameter for minimizing DB2 differences (edyshor) |
-|||| **Bug Fix**: When processing a file on root dir, a 2062 error occurs (Aurélien Dellieux) |
-| 2015/06/21 | FDBOZZO | [v1.19.45](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.45) | **Bug Fix mnx**: When a menu that uses single quotes or an expression in the option's MESSAGE is exported to text, when regenerating the menu from the text there are parts of the message that are cut off (Mike Potjer) |
-|||| **Bug Fix**: When processing multiple PJ2 files, an error "variable llError not defined" can occur (Lutz Scheffler) |
-|||| **Bug Fix pjx/pj2**: PJX/PJ2 projects that references files from other disk units throw errors for those files when processing with "\*" or "\*-" options (Matt Slay) |
-|||| **Bug Fix**: When processing multiple-files, sometimes encountered errores are not reported |
-|||| **Feature (API-PJX)**: New loadModule() method that returns the internal FoxBin2Prg Project object when the full name of an existent project file is specified |
-|||| **Feature (API-PJX)**: New getFilesNotFound() method for the FoxBin2Prg's Project object, that returns the count of files referenced in the project that are not found on disk and an array with all the existence state of each file |
-| 2015/05/31 | FDBOZZO | [v1.19.44](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.44) | **Bug Fix**: In certain PCs FoxBin2Prg does not return error codes when called from an external program, so another terminating method is implemented (Ralf Wagner) |
-|||| **Feature**: Allow exporting DBF data when using DBF\_Conversion\_Support:1 and optional individual CFG files |
-|||| **Bug Fix**: A previous bug fix on cascading errors management caused reseting the error status, making that sometimes errors don't get reported |
-| 2015/05/10 | FDBOZZO | [v1.19.43](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.43) | **Feature**: Added new CFG setting "RemoveZOrderSetFromProps" for removing ZOrderSet property when you want to maintain the original class ZOrder always, avoid unnecesary differences and fix some visual on top/on bottom control problems (Ryan Harris) |
-|||| **Feature**: Do not allow progressbar window become the default output window of ? command (Lutz Scheffler) |
-|||| **Bug Fix**: Fixed VFP9 SP1 validation message |
-|||| **Bug Fix**: FoxBin2Prg PRG2BIN does not return error codes (Ralf Wagner) |
-|||| **Bug Fix**: FoxBin2Prg sometimes generates an OLE error when executed for second time on a file with problems (Fidel Charny) |
-|||| Some enhancements in security of DLL declarations and On Escape management |
-|||| **Defect Fix**: Accesing DataSessionID property throws an error because of the change of internal classes between custom and session |
-|||| **Bug Fix**: When a form have AutoCenter=.T., there are times that when regenerating the binary and executing it does not shows centered (Esteban Herrero) |
-| 2015/04/16 | FDBOZZO | [v1.19.42](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.42) | **Feature**: Added VFP 9 SP1 runtime validation |
-|||| **Bug Fix**: Broken SourceSafe compatibility because an error is thrown when querying for file support (Tuvia Vinitsky) |
-|||| **Bug Fix scx/vcx**: Process only one TEXT/ENDTEXT nesting level because TEXT/ENDTEXT can't be nested (Lutz Scheffler) |
-|||| **Feature**: Make some error descriptions more informative and precise (Lutz Scheffler) |
-|||| **Feature (API)**: Allow specifying inputFile with relative path (Lutz Scheffler) |
-|||| **Bug Fix scx**: Metadata of Dataenvironment not properly generated when Dataenvironment is renamed |
-|||| **Bug Fix**: Added PJX/PJ2 generation when specifying "file.pjx", "\*" (Lutz Scheffler) |
-|||| Some enhancements in german translations (Lutz Scheffler) |
-|||| **Feature**: Added multiprocessing of projects (\*.pjx, \*.pj2) when specifying "file.pjx", "\*" (Lutz Scheffler) |
-|||| Change FoxBin2Prg base class from custom to session (Lutz Scheffler) |
-|||| **Feature**: Allow processing all project files without converting the PJX/2, with "\*-" (Lutz Scheffler) |
-|||| **Bug Fix pjx/pj2**: If end of line (CR+LF) is used on pjx's "Build" properties data, generated pj2 is malformed |
-|||| **Feature**: Default foxbin2prg.cfg configuration file renamed to foxbin2prg.cfg.txt to no overwrite user cfg (Lutz Scheffler) |
-|||| **Feature**: Added DOS errOut output support and implemented in writeErrorLog when logging errors |
-|||| **Feature**: Added full support for \*? file masks for multi-processing files of the same extension |
-|||| **Feature (API)**: Added new parameter to allow alternative main CFG (Lutz Scheffler) |
-|||| **Feature (API)**: Added new get\_Processed() method for obtaining information about processed files (Lutz Scheffler) |
-|||| **Feature**: Added new file processing output to DOS stdOut (Lutz Scheffler) |
-|||| **Bug Fix**: Fixed processing cancelation with Esc key |
-|||| **Feature**: Sort table/view fields alphabetically to facilitate diffing and merging, while maintaining a list with the original field order for correct DBC regeneration (Ryan Harris) |
-|||| **Feature**: Apply ClassPerFile to DBC connections, tables, views and SPs (Ryan Harris) |
-|||| **Bug Fix mnx**: Empty Pad name is not kept when regenerating a menu defined with and empty Pad name (Lutz Scheffler) |
-|||| **Feature (API)**: New property "lProcessFiles" that allow setting to .F. when using foxbin2prg as object to get Processing file info with getProcessed method without actual processing |
-|||| **Bug Fix frx/lbx**: Trimmed some extra CR,LF,TAB from FR2/LB2 tag that where included in previous versions (Ryan Harris) |
-|||| **Bug Fix scx/vcx/dbc**: Delete ERR files when processing with UseClassPerFile switch (Ryan Harris) |
-|||| **Feature**: Implemented CFG inheritance between directories |
-|||| **Feature (API)**: New method get\_DirSettings() that returns the CFG settings object for the indicated directory (Lutz Scheffler) |
-|||| **Feature**: Allow generation of text for a single class of a librery when using ClassPerFile (Lutz Scheffler) |
-|||| **Feature (API)**: Renowned method names to English to facilitate international understanding (Mike Potjer) |
-| 2015/01/18 | FDBOZZO | [v1.19.41](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.41) | **Bug Fix db2**: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. |
-|||| **Bug Fix vcx/scx**: Erroneous detection of PROCEDURE/ENDPROC structures when used as parameters of LPARAMETERS and start in new line (Ryan Harris) |
-| 2015/01/11 | FDBOZZO | [v1.19.40](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.40) | **Enhancement frx/lbx**: Clean ASCII 0 from expression field for Dataenvironment, Cursors and Relations |
-|||| **Bug fix frx/lbx**: When using Dataenvironment with more than one cursor, remaining cursors are lost |
-|||| **Feature**: Added new configuration "ShowProgressbar:2" to activate the progressbar only when a directory is selected and deactivate it for individual files (Jim Nelson) |
-|||| **Bug fix dbf**: Error 12, variable "tcOutputFile" is not found when DBFConversionSupport=4 and output file is the same as existent one (Mike Potjer) |
-|||| **Feature scx/vcx/sc2/vc2**: Added new code checking to find duplicated object names for the same class and container to notify those cases of file corruption |
-|||| **Bug Fix**: "Error 2183: Operation requires that SET MULTILOCKS is set to ON" in some DBF convertions |
-| 2015/01/01 | FDBOZZO | [v1.19.39](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.39) | **Bug fix vbs**: vbs scripts does not show FoxBin2Prg process errors correctly |
-|||| When using BIN2PRG or PRG2BIN keywords with FoxBin2Prg command line, allow processing one file (Mike Potjer) |
-|||| Add keyword SHOWMSG and use INTERACTIVE keyword for an interactive dialog (Mike Potjer) |
-|||| When processing a directory from commandline with foxbin2prg alone and the INTERACTIVE keyword, show a dialog to ask what to process (Mike Potjer) |
-|||| **Bug fix dc2**: DisplayClass and DisplayClassLibrary values got the wrong value "Default" and not the corresponding own values (Christopher Kurth/Ryan Harris) |
-|||| Deleted recompilation scripts for language, because it is an automatic selection now |
-| 2014/12/13 | FDBOZZO | [v1.19.38](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.38) | **Feature**: Now is possible to use FoxBin2Prg for batch conversions directly from the File Explorer (see README.txt), without the need of vbs scripts, that sometimes can make trouble or are not permitted by IT department (Francisco Prieto) |
-|||| **Feature**: Enhanced Multilanguage support by 3 ways: 1-Automatic DEFAULT (depending on VERSION(3)); 2-By parameter, using the new method ChangeLanguage(); 3-Using the new setting "Language" in foxbin2prg.cfg |
-|||| **Feature**: Detection of duplicated methods on vc2/sc2 files to notify those cases of vcx/scx file corruption (Ãlvaro Castrillón) |
-| 2014/11/30 | FDBOZZO | [v1.19.37](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.37) | **Feature**: Added Class per file support, configurable with UseClassPerFile:1 (Ryan Harris/Lutz Scheffler/Ãlvaro Castrillón) |
-|||| **Feature**: foxbin2prg.cfg configuration options can now have "&&" comments at the right of the values (edyshor) |
-|||| **Feature**: Added support for the new "ClearDBFLastUpdate" setting in FoxBin2Prg.cfg, activated by default to minimize DB2 differences (edyshor) |
-|||| **Feature**: Enhanced progressbar indication, with more detailed information |
-|||| **Feature**: vcx/scx broken properties autofix because an erroneous manual user edition on the vcx/scx |
-|||| **Feature**: vcx/scx autofix por Hidden and Protected duplicated properties (some type of corruption or bad manual user edit) |
-|||| **Feature**: Added a validation for FRX to notify the user if it is not a VFP 9 REPORT |
-|||| **Feature**: Batch convertions can now be interrupted with the Esc key |
-|||| **Bug Fix dbf**: "Error 1903, String is too long to fit" when converting long DBF files with "DBFConversionSupport:4" to text (edyshor) |
-|||| **Bug Fix vcx/scx**: Sometimes some properties get the description of a similarly named property |
-|||| **Bug Fix vcx/scx**: Hidden and Protected properties are not ordered alphabetically |
-|||| Various Code Optimizations for enhancing processing performance |
-| 2014/10/08 | FDBOZZO | [v1.19.36](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.36) | **Bug fix mnx**: When generating mn2 text view, menu all pad IDs are generated as \_000000000 (bug introduced in v1.19.35) |
-|||| **Enhancement**: New "VFP9\_FoxBin2Prg.vbs" script for "SendTo" menu, that replaces FoxBin2Prg.exe in this menu and adds a process status message |
-| 2014/10/05 | FDBOZZO | [v1.19.35](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.35) | **Enhancement**: Always generate the same Timestamp and UniqueID for binaries, for minimizing differences when regenerating them (Marcio Gomez G.) |
-| 2014/09/19 | FDBOZZO | [v1.19.34](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.34) | **Bug Fix**: If run from VFP Command Window and there is a file in use, an error is thrown because can't capitalize source file (Jim Nelson) |
-| 2014/08/29 | FDBOZZO | [v1.19.33](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.33) | **Bug Fix mnx**: Menu doesn't generate well when there is a Bar of #BAR type without a name (Peter Hipp) |
-|||| **Bug Fix mnx**: If a menu option have an associated Procedure with 1 line of code, the Procedure is converted to Command (Peter Hipp) |
-| 2014/08/26 | FDBOZZO | [v1.19.32](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.32) | If exists a property called "text" it is confused with a text/endtext structure (Peter Hipp) |
-| 2014/08/22 | FDBOZZO | [v1.19.31](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.31) | Trash cleanup code on binary methods, normally added by tools like ReFox and others |
-|||| Added EXE version number when generating a debug LOG file |
-|||| Enhanced recognition of #IF..#ENDIF instructions when there are spaces between # symbol and the command name |
-|||| Added capitalization normalization for input files |
-|||| Added new c\_Language property for querying actual compiled language (EN,ES,DE,etc) |
-| 2014/08/10 | FDBOZZO | [v1.19.30](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.30) | **Bug Fix vcx/scx**: Bad EndText (from Text/EndText block) detection when the previous line ends with "," or ";" (Jim Nelson) |
-|||| Bug Fix vcx/scx: Some methods are not alphabetically sorted in some inheritance situations (Ryan Harris) |
-|||| Added FoxUnit test cases to bug fix confirmation of both |
-| 2014/08/01 | FDBOZZO | [v1.19.29](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.29) | **Bug Fix vcx/scx**: Bad Text (from Text/EndText block) detection when there is a line that begins with a "text" field and previous line end with "," in regards of ";" (M\_N\_M) |
-|||| Optimizations and refactoring |
-| 2014/07/26 | FDBOZZO | [v1.19.28](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.28) | **Feature**: Added new options in foxbin2prg.cfg (DBF_Conversion_Included, DBF_Conversion_Excluded) and in filename.dbf.cfg (DBF\_Conversion\_Order, DBF\_Conversion\_Condition) for exporting DBFs data to text when DBF_Conversion_Support is 4 (Edyshor) |
-| 2014/07/18 | DH/FDBOZZO | [v1.19.27](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.27) | **Feature**: Added support for exporting DBF data for DIFF when using DBF\_Conversion\_Support: 4 in foxbin2prg.cfg (It's intended just for DIFF small DBFs, as config ones, not for true Data export. Binary fields are not exported and there is not an Import Data feature) (Doug Hennig) |
-| 2014/07/06 | FDBOZZO | [v1.19.26](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.26) | **Feature**: Take out asterisks between "ENDPROC" and "PROCEDURE", analyzed in that exact order, to regenerate binary without errors. (Daniel Sánchez) |
-|||| **Feature**: Add the l\_DropNullCharsFromCode configuration option, enabled by default, to allow taking out NULLs from source code. (Matt Slay) |
-|||| **Bug Fix cfg**: ExtraBackupLevel does not work when using multi-configuration |
-| 2014/06/25 | FDBOZZO | [v1.19.25](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.25) | When processing one or multiple files with vbs scripts, show a message indicating the status of the generation, and show the error log if any error occurs (Pedro Gutiérrez M.) |
-|||| Code cleaning and normalization |
-|||| ClearUniqueID is True by default for tx2 files |
-|||| OptimizeByFilestamp is False by default, to avoid possible automatic modifications made by VFP when opening a form or a classlib |
-|||| New AllowMultiConfig switch enabled by default, that allow a foxbin2prg.CFG file per directory, overriding main CFG (Mario Peschke) |
-| 2014/06/15 | FDBOZZO | [v1.19.24](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.24) | **Bug Fix scx/vcx**: The absence of AGAIN keyword on some USE commands throws "tabla in use" error if used the PRG version from VFP command window (Matt Slay) |
-|||| **Bug Fix scx/vcx**: A table field called "text" that begins the line can be confused with the TEXT/ENDTEXT structure and can wrong recognize the rest of the code (Mario Peschke) |
-|||| **Bug Fix scx/vcx**: GetTimeStamp internal method throwse an error when day or month have just 1 digit (happen from v1.19.23) |
-|||| New "run\_aftercreate\_db2" event that permits execution of an external program when using FoxBin2Prg as object (for example, to export table data) |
-|||| New FoxUnit Unit Tests to verify new functionality and "text" bug fix |
-|||| Added foxbin2prg\_de.h file translation of most messages to German (Mario Peschke) |
-| 2014/06/07 | FDBOZZO | [v1.19.23](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.23) | Timestamps and UniqueIds values are back on binaries, and they are just cleaned up on tx2 files if NoTimestamps and ClearUniqueID flags are set. This minimizes some differences on the binary side |
-|||| Added sccdata default value when regenerating PJX binary (which is automatically completed on the PJX when opened anyway) |
-|||| Fixed timestamp evaluation for "OptimizeByFilestamp" optimization that evaluates just .??X files, and now .??T (memo) filestamps are evaluated too |
-|||| Fixed missing BorderColor property on props\_optiongroup.txt file |
-|||| Fixed missing Stretch property on props\_image.txt file (Kenny Vermassen) |
-|||| Fixed missing Enabled property on props\_image.txt file |
-| 2014/05/17 | FDBOZZO | [v1.19.22](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.22) | **Bug Fix vcx/scx**: Picture property of a form class does not show the image. Does not happen with control pictures (Fidel Charny) |
-|||| **Bug Fix scx/vcx**: Incorrect detection of PROCEDURE/ENDPROC/TEXT/ENDTEXT that can cause lost of some methods in some circunstantes (Andres Mendoza) |
-|||| **Bug Fix scx/vcx**: Some options from the optiongroup control loose there width when subclassed from a class with autosize=.T. (Miguel Duran) |
-|||| Added evaluation and generation of properties by classtype, when applicable |
-|||| Added support of property evaluation from external file (props\_\*.txt) |
-|||| Added enhanced Unit Tests of bitmap comparisons of screen captures before/after (the original is compared with the regenerated of the regenerated binary, for more accuracy) |
-|||| A lot of garbage collect optimizations all over the code |
-|||| Added Unit Testing of configuration by defaults, by file and by parameters |
-|||| Added Unit Testing for checking the generation of classes, forms, reports and menus |
-|||| Added new switch OptimizeByFilestamp (active by default) for making possible deactivation of this regeneration optimization by file timestamp, in case someone wants to force regeneration allways |
-| 2014/05/01 | FDBOZZO | [v1.19.21](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.21) | Added support to convert to text or binary all files of a project from pjx or pj2 (Matt Slay) |
-|||| Added optimization on the search of the capitalization program when processing projects |
-|||| Added keyword AGAIN on table openings, for enhancing concurrence (Jim Nelson) |
-|||| Added optimization based on file timestamps for regenerating only newer binaries and tx2 files (Matt Slay) |
-|||| Added English translation in foxbin2prg\_en.h for the LOG message of new timestamp optimization |
-|||| section simplification: Methods and arrays doesn't require preceding \* and ^ symbols anymore. |
-| 2014/04/17 | FDBOZZO | [v1.19.20](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.20) | **New**: CDX filename in DB2 files have relative paths now. This help show less differences when regenerating DB2 files from different paths |
-| 2014/04/02 | FDBOZZO | [v1.19.19](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.19) | **New**: DBF Hook run\_AfterCreateTable that let intercalate a personalized process between DBF creation and index creation when processing a DB2 file (example program in tests\demo\_hook\_dbf.prg included) (Fidel Charny) |
-| 2014/03/25 | FDBOZZO | [v1.19.18](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.18) | **Bug Fix vcx/scx**: Image controls with stretched icons or images, get redimensioned to original size when regenerating binary (Arturo Ramos) |
-|||| Bug Fix vcx/scx: Library level comments are not kept (Ryan Harris) |
-| 2014/03/16 | FDBOZZO | [v1.19.17](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.17) | **Bug Fix frx/lbx**: Double-quoted expressiones make fx2/lb2 files corrupt (Ryan Harris) |
-|||| **Bug Fix frx/lbx**: Multiline Comments are lost (Ryan Harris) |
-|||| **frx/lbx tag2 field enhance**: when used for tooltips, real values are shown in regards of b64 normal encoding |
-|||| **Bug Fix mnx**: Multiline Comments on Bars/Pads makes MN2 file corrupt (Ryan Harris) |
-|||| **Bug Fix mnx**: Some procedures doesn't generate correctly (Ryan Harris) |
-|||| English translation file foxbin2prg\_en.h syntax corrected (Ryan Harris) |
-|||| **Bug Fix vcx/scx**: Lowercase saved Dataenvironment property causes Reserved2 value to be not calculated |
-|||| **Bug Fix frx**: character on print condition on field makes fr2 file corrupt |
-|||| **Bug Fix mnx**: Using double-quotes on prompt option fields makes mn2 file invalid (Ryan Harris) |
-| 2014/03/10 | FDBOZZO | [v1.19.16](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.16) | **Bug Fix vcx/scx**: properties loose there hidden/protected visibility when no default value assigned (Ryan Harris) |
-|||| **Bug Fix vcx/scx**: character value with length >255 in addobject property regenerates with tag included (Ryan Harris) |
-|||| **Bug Fix vcx/scx**: When regenerating binari file with empty procedure makes FoxPro crash when trying to modify it on IDE |
-|||| **Bug Fix scx/vcx**: Binary can be corrupted if the class have a multiline comment (Tested on: Ffc\\_frxcursor.vcx) |
-|||| **Bug Fix**: If \_memberdata contains CR inside there values, they can be lost when regenerating tx2 text files |
-|||| **Bug Fix**: Property values with spaces at the right loose this spaces |
-|||| **Bug Fix**: When 2 or more methods share the same name (ej: met and met2) tx2 text file gets corrupted (Ryan Harris) |
-| 2014/03/04 | FDBOZZO | [v1.19.15](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.15) | **Bug Fix**: OLE information cleared when a legacy TX2 is processed |
-|||| Bug Fix: Default value of NoTimestamp = 0 ==> Now is 1, as should be |
-|||| Bug Fix: DBFs backlink info cleared when DBC is recreated (Ryan Harris) |
-|||| Feature: Lowercase capitalization in tx2 filename headers to minimize differences |
-| 2014/03/01 | FDBOZZO | [v1.19.14](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.14) | Load of configuration is optimized (foxbin2prg.cfg) to read cfg only once for a massive processing of multiple conversions |
-|||| .vbs scripts have been modified to respect the conversion support configuration defined in foxbin2prg.cfg configuration file |
-|||| 2 new functions where added to enhance and encapsulate the external use of the evaluation of the conversion support (requires previous call to EvaluarConfiguracion()). Used on .vbs scripts |
-|||| ExtraBackupLevels Regression: when no defined value, no backup is made |
-|||| New default value ClearUniqueID = 1 in foxbin2prg.cfg for minimizing differences in the SCM |
-| 2014/02/26 | FDBOZZO | [v1.19.13](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.13) | **Bug Fix**: If NoTimestamp setting of foxbin2prg.cfg is changed, opposite value is evaluated (Ryan Harris) |
-|||| Encapsulated foxbin2prg.cfg file for enhancing FoxUnit automated testing |
-|||| Internal change of property l\_UseTimestamps by l\_NoTimestamps |
-|||| With ExtraBackupLevels setting you can now deactivate backups if setting to 0 (Ryan Harris proposal) |
-|||| foxbin2prg.log file checking dropped, to activate the log file use foxbin2prg.cfg setting Debug=1 |
-|||| In TX2 header files show the file without path, because genereting it from different places makes unnecesary differences in Diff (Ryan Harris proposal) |
-|||| Created a lot of FoxUnit automated tests to check all settings of foxbin2prg.cfg configuration file |
-| 2014/02/23 | FDBOZZO | [v1.19.12](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.12) | Generation of VC2/SC2 with new header metadata for centralizing uniqueid, timestamp and ZOrder and big reduce of differences in a diff/merge (enhancement proposed by Ryan Harris) |
-|||| BINARY regeneration from the new metadata header (remains compatible with old VC2/SC2) |
-|||| FoxUnit test cases fixed for the new functionality |
-|||| Cleaning, Refactorization and optimization of Code |
-|||| Presentation enhancement of VC2/SC2 file headers |
-| 2014/02/13 | FDBOZZO | [v1.19.11](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.11) | WITH/ENDWITH optimizations with a conversion performance gain up to 16% more fast |
-|||| Bug Fix: Just one level of #IF was contemplated, throwing an error if more levels are nested |
-|||| Bug Fix: When regenerating the PJX, default home directory not always was correct |
-|||| New FoxUnit automated test added to check bug fix of nested #IF |
-| 2014/02/09 | FDBOZZO | [v1.19.10](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.10) | Added parametrization to enable configuration support for each kind of binary (0=None, 1=Only TX2, 2=TX2 and Binary) |
-|||| Fixed default NoTimestamps setting |
-|||| Adjusted some FoxUnit test cases |
-|||| EXPERIMENTAL: Added new configuration parameter "ClearUniqueID" in foxbin2prg.cfg for Clearing UniqueID in binaries and text versions. Works well and apparently FoxProdoesn't make use of it, but more testing is required |
-| 2014/02/08 | FDBOZZO | [v1.19.9](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.9) | New configuration items in foxbin2prg.cfg |
-|||| Localization Bug: When recompiling with localization file foxbin2prg\_en.h renamed to foxbin2prg.h, syntax error occurs |
-|||| Debug information of .LOG files enhanced |
-|||| New parametrization for the number of backups, now just one .BAK by default (earlier was 10) |
-|||| Enabled configuration file foxbin2prg.cfg by default |
-|||| Change in default behavior: Now Timestamps are disabled by default. You can change this on foxbin2prg.cfg |
-| 2014/02/03 | FDBOZZO | [v1.19.8](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.8-pública) | **Bug fix**: ActivePage error when executing a regenerated binary with a PageFrame / New FoxUnit test to test solution |
-|||| Added cNoTimestamps='1' to batch conversion vbs scripts |
-| 2014/02/02 | FDBOZZO | [v1.19.7](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.7-pública) | Added Ole encapsulation in just 1 place |
-|||| Adjusted Blocksize of generated binaries |
-|||| New cNoTimestamps parameter. If '1' is given, then no timestamps are generated (useful for diff/merge) |
-| 2014/01/31 | FDBOZZO | [v1.19.6](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.6-pública) | Added SourceSafe support (SCCAPI) for Diff and Merge |
-|||| SCX bug fix: Dataenvironment sometimes doesn't regenerates correctly |
-|||| Functionality change: Automatic recompilation enabled by default again because some methods doesn't show on form edit. Can be deactivated passing '0' to cRecompile param |
-| 2014/01/26 | FDBOZZO | [v1.19.5](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.5-pública) | Added Multilanguage support and Localization file for English. To use it rename the new file foxbin2prg\_en.h to foxbin2prg.h and recompile |
-| 2014/01/24 | FDBOZZO | [v1.19.4](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.4-pública) | New "Recompile" parameter for recompiling from PJX directory (if provided) |
-|||| **Functionality change**: Now FoxBin2Prg does not recompile bins for default, because it do on bin dir and that can throw compilation errors. Use new parameter if needed or recompile by your own |
-|||| DBC: Added support for multiline "comment" property |
-|||| VBS Batch scripts: Added progress bar |
-| 2014/01/18 | FDBOZZO | [v1.19.3](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.3-pública) | Change on TXT timestamps to preserve empty values that can save a lot of differences when diff/merging. Previously empty timestamps get converted to datetime |
-|||| Optimization on TXT generation of ZOrders |
-| 2014/01/13 | FDBOZZO | [v1.19.2](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.2-pública) | Fix on PJX regeneration caused for something missing in the last change of "Autor" to "Author" |
-| 2014/01/08 | FDBOZZO | [v1.19.1](https://github.com/fdbozzo/foxbin2prg/tree/v1.19.1-pública) | Small change on TX2 headers to drop the "Generated" timestamp that causes innecesary differences / Updated the EXE version with the correct one |
-| 2014/01/08 | FDBOZZO | [v1.19](https://github.com/fdbozzo/foxbin2prg/tree/v1.19-pública) | Added new debug flag on .vbs scripts to show a "End process" message for batch processing |
-|||| **Bug Fix**: scx/vcx Improper order of Reserved3 props cause event access to not fire |
-|||| **Bug Fix**: dbf Improper index generated when the type is Candidate |
-|||| Added support for converting SourceSafe PJM to FoxBin PJ2 |
-|||| Added validation for Menus when converting from older versions, so user can convert it to VFP 9 format first |
-|||| Change in MN2 property: "Autor" was changed to "Author". You can add the missing letter to MN2 or regenerate |
-| 2014/01/07 | FDBOZZO | [v1.18.1](https://github.com/fdbozzo/foxbin2prg/tree/v1.18.1) | Added a vbs script (NormalizeFileNames.vbs) for FileNames normalizing in batch mode, and updated FileNameCaps.exe and the call on FoxBin2Prg |
-| 2014/01/06 | FDBOZZO | [v1.18](https://github.com/fdbozzo/foxbin2prg/tree/v1.18-pública) | **bug fix**: mnx Generation of DO Procedure or Command when no Procedure or Command available to call when empty option is created (Fidel Charny) |
-|||| Added support for DBFs earlier than VFP 9 for generating DB2 text, but DBF regeneration is in VFP 9 version! |
-|||| dbf bug fix: DBFs linked to a DBC that use long field names throw error when regenerating DBFs |
-|||| dbf bug fix: Some view info is lost when generating text from DBC |
-| 2014/01/03 | FDBOZZO | [v1.17](https://github.com/fdbozzo/foxbin2prg/tree/v1.17-pública) | **bug fix**: mnx Location value is lost and some menus doesn't render properly (Fidel Charny) |
-|||| Added 2 VB scripts (ConvertVFP9BIN2PRG.vbs and ConvertVFP9PRG2BIN.vbs) for batch converting of dirs and files if a shortcut is placed on "SendTo" user folder |
-|||| Added new Unit Testing cases for menus |
-| 2014/01/02 | FDBOZZO | [v1.16](https://github.com/fdbozzo/foxbin2prg/tree/v1.16-pública) | Added support for Menus (MNX) |
-| 2013/12/18 | FDBOZZO | [v1.15](https://github.com/fdbozzo/foxbin2prg/tree/v1.15-pública) | Added support for DBF, DBC and CDX binaries |
-| 2013/12/15 | FDBOZZO | [v1.14](https://github.com/fdbozzo/foxbin2prg/tree/v1.14-pública) | **bug fix**: scx autocenter property do nothing (Arturo Ramos) |
-|||| scx bug fix: Last COMMENT record is lost (Fidel Charny) |
-| 2013/12/08 | FDBOZZO | [v1.13](https://github.com/fdbozzo/foxbin2prg/tree/v1.13---pública) | **bug fix**: frx/lbx "Error 1924, TOREG is not an object" on some reports (Fidel Charny) |
-| 2013/12/08 | FDBOZZO | [v1.12](https://github.com/fdbozzo/foxbin2prg/tree/v1.12---pública) | Added support for Reports (FRX) and Labels (LBX) |
-| 2013/12/08 | FDBOZZO | [v1.11](https://github.com/fdbozzo/foxbin2prg/tree/v1.11---pública) | **bug fix**: vcx/scx \_memberdata value corrupted when the value is a long one (Edgar Kummers) |
-| 2013/12/07 | FDBOZZO | [v1.10](https://github.com/fdbozzo/foxbin2prg/tree/v1.10---pública) | **bug fix**: vcx/scx when there are methods with the same name, there code is assigned to erroneous objects (Fidel Charny) |
-| 2013/12/07 | FDBOZZO | [v1.9](https://github.com/fdbozzo/foxbin2prg/tree/v1.9---pública) | **bug fix**: vcx/scx last fix keep loosing some properties (Fidel Charny) |
-| 2013/12/06 | FDBOZZO | [v1.8](https://github.com/fdbozzo/foxbin2prg/tree/v1.8---pública) | **bug fix**: vcx/scx last fix keep loosing some properties (Fidel Charny) |
-|||| sort function encapsulated and reused on BIN and TXT generation for safety |
-| 2013/12/03 | FDBOZZO | [v1.7](https://github.com/fdbozzo/foxbin2prg/tree/v1.7---pública) | **bug fix**: vcx/scx some properties get lost and picture clause is not displayed if "Name" is not the last property on memo (Fidel Charny) |
-|||| Added verification of readOnly files and report this to Log file in debug mode |
-| 2013/12/02 | FDBOZZO | [v1.6](https://github.com/fdbozzo/foxbin2prg/tree/v1.6---pública) | Complete refactoring of BIN and TXT generation |
-|||| Changes of various algorithms |
-|||| scx/vcx bug fix: Array properties didn't save (Fidel Charny) |
-|||| Unit testing cases with FoxUnit |
-| 2013/11/27 | FDBOZZO | [v1.5](https://github.com/fdbozzo/foxbin2prg/tree/v1.5---pública) | **Bug fix**: On some forms dataenvironment didn't regenerate appropiately (Luis MartÃnez) |
-| 2013/11/27 | FDBOZZO | [v1.4](https://github.com/fdbozzo/foxbin2prg/tree/v1.4---pública) | Added mask support |
-|||| Added support for extension configuration on file foxbin2prg.cfg, so one can use "vca" instead of "vc2", etc |
-|||| Added support for a new parameter for Log generation |
-| 2013/11/24 | FDBOZZO | [v1.3](https://github.com/fdbozzo/foxbin2prg/tree/v1.3---pública) | Bug fixes, code cleaning, refactoring |
-| 2013/11/24 | FDBOZZO | [v1.2](https://github.com/fdbozzo/foxbin2prg/tree/v1.2---pública) | Bug fixes, code cleaning, refactoring |
-| 2013/11/22 | FDBOZZO | [v1.1](https://github.com/fdbozzo/foxbin2prg/tree/v1.1---pública) | Bug fixes |
-| 2013/11/22 | FDBOZZO | [v1.0](https://github.com/fdbozzo/foxbin2prg/tree/v1.0---pública) | Initial creation of clases on prg and support of VCX/SCX/PJX files |
-
-----
-
-This project is part of [VFPX](https://vfpx.github.io/).
-
-----
-Last changed: _2022/11/09_ 
\ No newline at end of file
diff --git a/docs/FoxBin2Prg_Internals.md b/docs/FoxBin2Prg_Internals.md
deleted file mode 100644
index 94f209b..0000000
--- a/docs/FoxBin2Prg_Internals.md
+++ /dev/null
@@ -1,727 +0,0 @@
-# Internals
-Documentation of FoxBin2Prg - A Binary to Text converter for MS Visual Foxpro 9
-
-## Purpose of this document
-This document shows some internal functions and ideas how to use of FoxBin2Prg.
-
-The original document was created by [Fernando D. Bozzo](https://github.com/fdbozzo) whom I like to thank for the great project.
-Pictures are taken from the original project.
-As far as possible these are the original documents. Changes are added where functionality is changed.
-
-----
-## Table of contents
-- [Why to use this tool](#why-to-use-this-tool)
-- [Limitations](#limitations)
-- [Configuration file](#configuration-file)
-- [Configuration file per table](#configuration-file-per-table)
-- [FoxBin2Prg Internals](#foxbin2prg-internals)
- - [ZOrder](#zorder)
- - [RemoveZOrderSetFromProps setting](#removezordersetfromprops-setting)
- - [VFP ZOrder bug and fix](#vfp-zorder-bug-and-fix)
- - [DBC ordered fields](#dbc-ordered-fields)
- - [PAM Section](#pam-section)
- - [Property Ordering](#property-ordering)
- - [Timestamps and UniqueIDs](#timestamps-and-uniqueids)
- - [DBF Data Export/Import for Diff/Merge](#dbf-data-export/import-for-diff/merge)
- - [Order and range of records](#order-and-range-of-records)
- - [Configuration per table](#configuration-per-table)
- - [DBF/DB2 Convertion Hooks](#dbf/db2-convertion-hooks)
- - [Language Support for messages](#language-support-for-messages)
- - [Multi-config](#multi-config)
- - [File Capitalization](#file-capitalization)
- - [Conversion processes Logging](#conversion-processes-logging)
- - [Create Class-Per-File](#create-class-per-file)
- - [Complementary options for the UseClassPerFile setting](#complementary-options-for-the-useclassperfile-setting)
- - [RedirectClassPerFileToMain](#redirectclassperfiletomain)
- - [ClassPerFileCheck](#classperfilecheck)
- - [Create File-Per-DBC](#create-file-per-dbc)
- - [Complementary options for the UseFilesPerDBC setting](#complementary-options-for-the-usefilesperdbc-setting)
- - [RedirectFilePerDBCToMain](#redirectfileperdbctomain)
- - [ItemPerDBCCheck](#itemperdbccheck)
- - [FoxBin2Prg API](#foxbin2prg-api)
- - [PEM](#pem)
- - [Renamed](#renamed)
- - [Log to StdOut](#log-to-stdout)
-- [How to use with a SCM tool](#how-to-use-with-a-scm-tool)
-
-## Why to use this tool
-The purpose of FoxBin2Prg is to facilitate the Diff and Merge of Visual FoxPro 9 _Binaries_,
-which are not natively supported by any source control tool.
-Traditionally FoxPro comes with a tool named SccText.prg who can make a text representation exporting the source code
-contained in FoxPro tables with a DBF structure. An enhanced version is available on VFPx named SccTextX,
-but like his ancestor, have some design limitations, as:
-
-* It doesn't generate PRG like code
-* It doesn't allow modification of the txa (text) files generated
-* Scctext's txa (text) files generated can't be used for merge with SCM tools, they are readonly
-* Timestamps and ZOrder fields generate a lot of unnecesary differences all over the text file
-
-FoxBin2Prg is designed to bring a solution for all of this, and a few more things,
-which makes _Text_ files with PRG-style and enhances compatibility with SCCAPI (SourceSafe) and other SCM tools,
-like PlasticSCM, Git, Subversion, and the like.
-Special remark on Merge operation is made, because it is the most difficult and more used operation when working with SCM tools,
-and this require that generated text files can be manipulated manually or automatically.
-
-#### Note
-**You came from Visual SourceSafe and have the .pjm but not the real pjx project?**
-
-No problem, just convert the .pjm to .pjx/.pjt sending to FoxBin2Prg, and it generates the real project again.
-
-## Limitations
-Most of the files look like prg or XML data. Please note, those files are only look alike.
-The parsing to generate the binary depends highly on the position of data.
-So if a file is defined like
-```
-
-
- I1
-```
-this
-```
- I1.
-```
-will be nice XML, but not readable to FoxBin2Prg. This is a line by line parser.
-Leading and trailing spaces are mostly no problem.
-
-You might freely change and merge code inside the text files, or data in a table-XML,
-but the result must be compilable and keep the structure.
-All limitations that occur to a binary format must be kept on the text representation -
-the definition of a HEADER class to a VCX will fail.
-
-
-## Configuration file
-It is possible to create a template or a config with all options and comments via
-```
-DO FOXBIN2PRG.PRG WITH "-c","template.cfg" &&==> Generates a template for FoxBin2Prg.cfg config file with newest settings
-DO FOXBIN2PRG.PRG WITH "-C","config.cfg" &&==> Generates a config file like FoxBin2Prg.cfg with recent settings of path of second parameter
-```
-See [command line](./FoxBin2Prg_Run.md#usage-2).
-The config file is used to move local setting to a different comupter or for changes while branching.
-
-The options in the template (or in the config that ships with FoxBin2Prg) are commented out.
-To activate an option remove the asterix and set appropriate value.
-These are the FoxBin2Prg.cfg configuration file settings and their meaning:
-
-| FoxBin2Prg.cfg keywords | Value (_Default_) | Description |
-| ----- | ----- | ----- |
-| Language | _(auto)_, EN, FR, ES, DE | Language of templates, shown messages and LOGs. EN=English, FR=French, ES=Español, DE=German, Not defined = AUTOMATIC (using VERSION(3)) ||
-| DontShowProgress | 0 | **Deprecated**. Replaced by ShowProgressbar option from v1.19.40 |
-| ShowProgressbar | 0, _1_, 2 | 0=Don't show progressbar,
1=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 |
-| 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 |
-|||
-| 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) |
-| | | For complex data:
(PJX / DBC / DBF): 0=No support,
1=Generate Header _Text_ only (Diff),
2=Generate Header _Text_ and _Bin_ (Merge/Only Structure!),
4=Generate _Text_ with DATA (Diff),
8=Export and Import DATA (Merge/Structure & Data) |
-| PJX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional ((Merge/Only Structure!),
4=Generate _Text_ with DATA (Diff), 8=Export and Import DATA (Merge/Structure & Data) and _bin_) support activated |
-| VCX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and _bin_) support activated |
-| SCX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and _bin_) support activated |
-| FRX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and _bin_) support activated |
-| LBX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and _bin_) support activated |
-| MNX_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and _bin_) support activated |
-| DBC_Conversion_Support | 0, 1, _2_ | Default value is 2 - Bidirectional (_Text_ and _bin_) support activated |
-| DBF_Conversion_Support | 0, _1_, 2, 4, 8 | Default value is 1 - just _Text_ support activated.
The support for regenerating DBFs structures (value = 2) are disabled by default to not overrite data accidentally. When activating bidirectional support, keep in mind that Data is not restored, just the structure and indexes!.
A value of 4 is used to export Structure and Data, but exported data is not imported again.
A value of 8 is used for bidirectional support (No General fields!).
**Note:** This can be [changed per table](#configuration-file-per-table). |
-| FKY_Conversion_Support | 0, _1_ | Default value is 1 - _Text_ support activated |
-| MEM_Conversion_Support | 0, _1_ | Default value is 1 - _Text_ support activated |
-|||
-| UseClassPerFile | _0_, 1, 2 | 0=One library _Text_ file,
1=Multiple file.class.vc2 files,
2=Multiple file.baseclass.class.vc2 files
See [Create Class-Per-File](#create-class-per-file) |
-| [RedirectClassPerFileToMain:](#redirectclassperfiletomain:) | _0_, 1 | 0=Don't redirect to file.vc2,
1=Redirect to file.vc2 when selecting file.class.vc2
RedirectClassType: 1 precedes this setting |
-| RedirectClassType | _0_, 1, 2 | For classes created with UseClassPerFile>0 in the form file[.baseclass].class.tx2 (vcx only) |
-| | | 0=creates / refresh class in file.VCX and add / replace all other classes of this library |
-| | | 1=creates / refresh class file[.baseclass].class.VCX and do not touch file.VCX |
-| | | 2=creates / refresh class in file.VCX and do not touch other classes of file.VCX |
-| [ClassPerFileCheck](#classperfilecheck) | _0_, 1 | 0=Don't check file.class.vc2 inclusion,
1=Check file.class.vc2 inclusion
Only used if import file is in file[.baseclass].class.tx2 syntax.
Ignored for RedirectClassType: 2 |
-|||
-| OldFilesPerDBC | _0_, 1 | 0=Old Style,
1=New style
This controls the use of the _UseFilesPerDBC_, _RedirectFilePerDBCToMain_ and _ItemPerDBCCheck_ options.
Only if this option is set, the options will be read. |
-| | | 0=New version inactive, options follow:
UseFilesPerDBC=UseClassPerFile
RedirectFilePerDBCToMain=RedirectClassPerFileToMain
ItemPerDBCCheck=ClassPerFileCheck |
-| | | 1=New version active, options active |
-| | | Note: The options will be set to old style, if option is turned off. |
-| UseFilesPerDBC | _0_, 1 | 0=One database dc2 file,
1=Multiple file.\*.\*.dc2 files.
See [Create File-Per-DBC](#create file-per-dbc)
**Only if OldFilesPerDBC is 1** |
-| | | 0=creates only a file.dc2 with all DBC (file) data |
-| | | 1=creates a file.dc2 with DBC properties |
-| | | and additional DBC files per DBC item (stored-proc, table, ..) |
-| | | Note: recration only if RedirectFilePerDBCToMain is 1 |
-| [RedirectFilePerDBCToMain](#redirectfileperdbctomain) | _0_, 1 | 0=Don't redirect to file.dc2,
1=Redirect to file.tx2 when selecting file.item.*.dc2
**Only if OldFilesPerDBC is 1** |
-| [ItemPerDBCCheck](#itemperdbccheck) | _0_, 1 | 0=Don't check file.item.*.dc2 inclusion,
1=Check file.item.*.dc2 inclusion
**Only if OldFilesPerDBC is 1**|
-|||
-| NoTimestamps | 0, _1_ | 0=Do not clear
1=Clear
By default, timestamp fields are cleared on _Text_ files, because a lot of differencies are generated on _Binaries_ and _Text_ files with Timestamps activated. This timestamp field is part of the vcx, scx and other Foxpro binary source code files. |
-| ClearUniqueID | 0, _1_ | 0=Keep UniqueID,
1=Clear Unique ID.
Very useful for Diff and Merge.
By default, UniqueID fields are cleared on _Text_ files, because a lot of differencies are generated with UniqueID activated |
-| OptimizeByFilestamp | _0_, 1 | 0=Don't optimize (always generate),
1=Optimize (generate only when destination filestamp es older). By default this optimization is deactivated, and it is not recommended if using for merge, so _Bin_ and _Text_ files can be modified seperately.
Dangerous while working with branches! |
-| RemoveNullCharsFromCode | 0, _1_ | 1=Drop NULL chars from source code,
0=Leave NULL chars in source code |
-| RemoveZOrderSetFromProps | _0_, 1 | 1=Remove ZOrderSet from the properties,
0=Leave ZOrderSet in the properties |
-|||
-| ClearDBFLastUpdate | 0, _1_ | 0=Keep DBF LastUpdate,
1=Clear DBF LastUpdate.
Useful for Diff, minimizes differences. |
-| ExcludeDBFAutoincNextval | _0_, 1 | 0=Do not exclude this value from db2,
1=Exclude this value from db2 |
-| DBF_Conversion_Included | * | If DBF_Conversion_Support:4, you can specify multiple filemasks: www,fb2p_free.dbf.
See [Order and range of records](#order-and-range-of-records).
**Note:** This can be [changed per table](#configuration-file-per-table). |
-| DBF_Conversion_Excluded | | If DBF_Conversion_Support:4, you can specify multiple filemasks: www,fb2p_free.dbf.
See [Order and range of records](#order-and-range-of-records).
**Note:** This can be [changed per table](#configuration-file-per-table). |
-| DBF_BinChar_Base64 | 0, _1_ | 0=For character type fields, if NoCPTrans 0=do not transform,
1=use Base64 transform (default)
**Note:** This can be [changed per table](#configuration-file-per-table). |
-| DBF_IncludeDeleted | _0_, 1 | 0=Do not include deleted records (default),
1=Include deleted records
**Note:** This can be [changed per table](#configuration-file-per-table). |
-| | | **Note:**
This is only true for tables. Generating DBC to _Text_ and back to _Binary_ will act as PACK DATABASE.
The data added by _DBF_IncludeDeleted: 1_ will be ignored by old versions generating _Binary_ files. |
-|||
-| extension: xx2 | | FoxBin2Prg extensions ends in '2' (pj2, vc2, sc2, etc), but you can change that. |
-| extension: pj2= | \ | Text file for project PJX |
-| extension: vc2= | \ | Text file for classlibray VCX, or a class out of a VCX |
-| extension: sc2= | \ | Text file for form SCX, or a class out of a SCX (Form; Dataenbironment) |
-| extension: fr2= | \ | Text file for report FRX |
-| extension: lb2= | \ | Text file for label LBX |
-| extension: mn2= | \ | Text file for menu MNX |
-| extension: db2= | \ | Text file for table DBF, free or DBC bound |
-| extension: dc2= | \ | Text file for database container DBC, or records from database container DBC |
-| extension: fk2= | \ | Text file for macro file FKY |
-| extension: me2= | \ | Text file for variable memory MEM, created with SAVE TO |
-| | | **Example for for making it SourceSafe (sccapi v1) compatible:**
extension: pj2=pja
extension: vc2=vca
extension: sc2=sca
extension: fr2=fra
extension: lb2=lba
extension: mn2=mna
extension: db2=dba
extension: dc2=dca |
-
-### Note
-The options will be read outside in, top to down. See [Multi-config](#multi-config)
-
-## Configuration file per table
-Those configuration files are valid for a single table only. The idea is to have special settings for single tables.
-It is possible to create a template with all options and comments via
-```
-DO FOXBIN2PRG.PRG WITH "-t","template.dbf.cfg" &&==> Generates a template for table.dbf.cfg per table config file with newest settings
-```
-
-See [command line](./FoxBin2Prg_Run.md#usage-2).
-The options in the template (or in the config that ships with FoxBin2Prg) are commented out.
-To activate an option remove the asterix and set appropriate value.
-These are the Table.dbf.cfg configuration file settings and their meaning:
-
-| FoxBin2Prg.cfg keywords | Value | per
file | Description |
-| ----- | ----- | ----- | ----- |
-| DBF_Conversion_Support | 0, 1, 2, 4, 8 | | 0=No support,
1=Generate Header _Text_ only (Diff),
2=Generate Header _Text_ and _Bin_ (Merge/Only Structure!),
4=Generate _Text_ with DATA (Diff),
8=Export and Import DATA (Merge/Structure & Data) |
-| DBF_Conversion_Order | c_Expression | x | Field expresion (For _INDEX ON_). ie: name+str(age,3),
Empty means no sort order.
usefull only if _DBF_Conversion_Support_>0 |
-| DBF_Conversion_Condition | c_Expression | x | Logical expression (For _SCAN FOR_). ie: age > 10 AND NOT DELETED(),
empty means all records, except _DBF_IncludeDeleted_
usefull only if _DBF_Conversion_Support_>0 |
-| DBF_IndexList | c_FileList | x | A comma delimited list of additional index files ( cdx or idx ). **Not the structural index file.** |
-| DBF_BinChar_Base64 | 0, 1 | | 0=For character type fields, if NoCPTrans 0=do not transform,
1=use Base64 transform
usefull only if _DBF_Conversion_Support_>2 |
-| DBF_IncludeDeleted | 0, 1 | | 0=Do not include deleted records,
1=Include deleted records
usefull only if _DBF_Conversion_Support_>2 |
-
-Setting **per file** could only be used via this configuration file.
-For defaults, see [Configuration file](#configuration-file).
-
-## FoxBin2Prg Internals
-### ZOrder
-In _Text_ files and starting from v1.19.12, the ZOrder,
-that determines the order on which objects are instantiated and which one is on top,
-is maintained in a more intuitive and optimal way compared to traditional stored numerical values.
-_Text_ files keep lists of objects and their metadata in a special OBJECTDATA tag,
-in which the order of the list is the ZOrder of the object, like this example:
-````
-DEFINE CLASS cnt_controls AS container && "cnt_controls" class description
- *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
-
- *-- OBJECTDATA items order determines ZOrder
- * < OBJECTDATA: ObjPath="Check2" UniqueID="" Timestamp="" />
- * < OBJECTDATA: ObjPath="Check4" UniqueID="" Timestamp="" />
- * < OBJECTDATA: ObjPath="Label_h" UniqueID="" Timestamp="" />
- * < OBJECTDATA: ObjPath="Textbox_h" UniqueID="" Timestamp="" />
- * < OBJECTDATA: ObjPath="Check1" UniqueID="" Timestamp="" />
- * < OBJECTDATA: ObjPath="Check3" UniqueID="" Timestamp="" />
-````
-This way, you can rearrange the items to alter their ZOrder, and this does auto-renumbering when generating _Binaries_.
-
-### RemoveZOrderSetFromProps setting
-#### Note:
-The ZOrderSet property is not shown in VFP Properties editor.
-
-Starting at v1.19.43 there is a new configuration setting named RemoveZOrderSetFromProps,
-that can be used to automatically remove this property from the objects, if enabled with 1.
-This property keep the order of the inherited controls used on visual classes using a numeric value like the Tabstop property,
-but this property is not shown to the user and sometimes their value is duplicated, causing that every time you save a visual class
-or form, some control(s) get their order swapped, so when reopening the visual class some objects that should appear on top
-are on botton and vice versa.
-
-#### VFP ZOrder bug and fix
-Sometimes you can see that some objects are reordered every time you save a visual form/class
-and generate the _Text_ file. This is caused because in some situations VFP can loose the tracking to some ZOrders,
-and duplicate them. To **fix** this problem, you just need to open your visual form/class,
-reorder manually the offending objects to force VFP to assign a new ZOrder value and generate the _Text_ file.
-You can see (only in the _Text_ file or inside the vcx/vct) that the property is called ZOrderSet and have a repeated value
-before fixing it. Another solution, starting at v1.19.43, is using RemoveZOrderSetFromProps:1 in foxbin2prg.cfg file to
-remove this from the properties. A better solution is using this setting only in a specific directory used to fix this
-kind of problems. In any case, for this setting to work properly, you need to generate the _Binary_
-
-### DBC ordered fields
-Starting from v1.19.42 the members of the DBC are ordered alphabetically, including fields of DBFs and Views, Connections, Tables,
-Views and Relations. All this to minimize the differences when diffing DBCs that have constant changes.
-````
-
- depto
- descrip
-
-````
-### PAM Section
-This section is generated for classes and forms, it is delimited with the tag,
- and have the definition of Properties, Arrays and Methods, with their comments, like this example:
-````
-DEFINE CLASS c1 AS custom OLEPUBLIC && Description of "c1" class
- *
- *m: emptymethod_with_comments && This method have no code, just comments!
- *m: mymethod && My Method
- *p: prop1 && My prop 1
- *p: special_prop_with_cr
- *p: special_prop_with_crlf && Should have CR+LF
- *a: array_1_d[1,0](1,0) && 1 dimension array (1)
- *a: array_2_d[1,2](1,2) && 2 dimension array (1,2)
- *p: _memberdata && XML Metadata for customizable properties
- *
-````
-Starting from v1.19.21 arrays don't need to be preceded with "^" symbol, and methods don't need to be preceded with "*" symbol,
-which makes this section more easy to maintain.
-
-### Property Ordering
-On _Text_ files is easy, ordering for methods and properties is done in alphabetical way, like scctext does with methods.
-This makes comparisons easier and with less differences.
-On _Binaries_, property ordering is a very different thing. No documentation is available about this,
-so the only guideline is trying to make it as FoxPro does, but this is not always possible because there are two extreme cases,
-and variants between the them:
-1. The best and easy one, is when defining a class (or control) with his properties: In this case,
-each class have a phisical record on the scx/vcx table, and all the properties of it are keep toghether,
-so this ordering can be easily duplicated (look at "TESTS\DATOS_READONLY\f_form_aa.scx file" on FoxBin2Prg project
-and open it as a table to see the class per record)
-2. The worst and most difficult case, is when there is a container with controls subclassed,
-and properties are changed on the instance: In this case FoxPro makes a big and unique list of properties of all objects
-in just one phisical record, so there is no way to know which property corresponds to which class. For this case,
-I've made a unique list composed of all properties of all classes,
-ordered according to most common orderings (look at "TESTS\DATOS_READONLY\f_form_aa2.scx file" on FoxBin2Prg project
-and open it as a table to see all the properties of all the classes of the same earlier example, in just one record)
-
-For these two cases, and starting from v1.19.22, I've created several "props_*" files with ordering by class for the 1st case,
-and a list with all in it ("props_all.txt") for the second case, so in case of any problems,
-rearranging some props will be an easy thing.
-
-#### Warning
-These "props_**" files are necessary in the FoxBin2Prg install directory.
-
-It's recommended to use the EXE version that have all files included and is faster._
-Several Unit Tests (in TESTS directory) are made to make the best effort to cover the most typical use cases.
-There is also an Excel spreedsheet with the compilation of properties of each class with the order that FoxPro uses internally,
-and a tab with the all-in-one order for the worst case.
-
-### Timestamps and UniqueIDs
-Timestamp field are used in VFP to track changes with 3rd party tools and UniqueId is used to identify classes inside _Binaries_,
-but, AFAIK, they are not used by VFP itself. There are 2 switches, enabled by default,
-that are used to clear this values (ClearUniqueId and NoTimestamps),
-so no differences are shown for this values constantly changing.
-Starting from v1.19.23 this values are just cleared on _Text_ files, and generated on the _Binaries_,
-as well the sccdata field, because this way there are no differences when opening/closing certain files, as a PJX,
-which by default fill some of this fields even if no modifications are made, which causes that SCM tools detect those changes.
-Having them prefilled, then no changes are detected.
-
-### DBF Data Export/Import for Diff/Merge
-Starting at version v1.19.21, and thanks to Doug Hennig proposal and coding, FoxBin2Prg can export DBFs Data,
-specially intended for small DBFs, as config ones, on which sometimes is needed to track the changes.
-It is deactivated by default, but can be activated with **"DBF_Conversion_Support: 4"** in foxbin2prg.cfg
-Since version v1.19.47, importing of Data can be activated with **"DBF_Conversion_Support: 8"** in foxbin2prg.cfg
-If you want to export the data of just some tables and not for all of them, one way is moving the tables
-for data export to another directory, or even a subdirectory of main data files,
-and write a foxbin2prg.cfg with **"DBF_Conversion_Support: 4 or 8"** for this diretory only,
-taking advantage of multi-configuration capability introduced on v1.19.25
-A much better option that join the best of the two worlds, available from v1.19.44,
-could be using the default setting **"DBF_Conversion_Support: 1"** and using **individual cfg files** for each table
-(table.dbf.cfg) on which you want to export their data, so this way you can have only the structure in DB2 files
-and some tables with their data exported for easy diffing with previous versions,
-or even use **"DBF_Conversion_Support: 8"** (available since v1.19.47) for bidirectional support of data import/export.
-
-### Order and range of records
-**FoxBin2Prg.cfg (Main CFG, Directory CFG or Table CFG)**
-New foxbin2prg.cfg options for filtering tables from conversion using one or multiple conbinations of filemasks.
-
-#### Syntax
-````
-"DBF_Conversion_Included: [ , [ , ... ](-,_filemask_-[-,-...-) ]"
-"DBF_Conversion_Excluded: [ , [ , ... ](-,_filemask_-[-,-...-) ]"
-````
-
-Example of multiple file masks (separte with ","):
-````
-"DBF_Conversion_Included: PET**.**, ??ME.DBF, ???.DBF, ?.**"
-````
-
-### Configuration per table
-New configuration options. See [Configuration file per table](#configuration-file-per-table).
-
-These options can be used in any combination inside a dbf particular cfg file,
-if you create a text file using your dbf filename and adding ".cfg".
-
-#### Syntax for filename.dbf.cfg contents
-````
-"DBF_Conversion_Support: <4 for export only or 8 for bidirectional support>"
-"DBF_Conversion_Order: "
-"DBF_Conversion_Condition: "
-````
-
-#### Example: customers.dbf.cfg
-````
-"DBF_Conversion_Support: 4"
-"DBF_Conversion_Order: cust_no"
-"DBF_Conversion_Condition: cust_no > 10"
-````
-
-### DBF/DB2 Convertion Hooks
-From version v1.19.19 there is a new property "run_AfterCreateTable" and from version v1.19.24 "run_AfterCreate_DB2".
-The purpose of both properties is to allow the execution of an external program each time a DBF is converted to DB2 or a DB2
-is converted to DBF.
-The main purpose of FoxBin2Prg is to be used for Diff and Merge with a SCM tool, so in this scenario the data is not needed,
-but there are use cases where exporting, importing or manipulating data is needed while making the conversions, and for those cases are this properties.
-
-#### This is a sample program
-````
-*-- DEMO HOOK FOR PROCESSING DBFs AND DB2
-LOCAL oFB AS 'c_foxbin2prg' OF 'c:\desa\foxbin2prg\foxbin2prg.prg'
-oFB = NEWOBJECT( 'c_foxbin2prg', 'c:\desa\foxbin2prg\foxbin2prg.prg' )
-oFB.DBF_Conversion_Support = 2
-oFB.run_AfterCreateTable = 'p_AfterCreateTable'
-oFB.run_AfterCreate_DB2 = 'p_AfterCreate_DB2'
-oFB.execute( 'C:\DESA\foxbin2prg\TESTS\DATOS_TEST\fb2p_dbc.dc2' )
-oFB.execute( 'C:\DESA\foxbin2prg\TESTS\DATOS_TEST\fb2p_dbf.db2' )
-oFB.execute( 'C:\DESA\foxbin2prg\TESTS\DATOS_TEST\fb2p_dbf.dbf' )
-oFB = NULL
-RETURN
-
-
-PROCEDURE p_AfterCreateTable
- LPARAMETERS lnDataSessionID, tc_OutputFile, toTable
- MESSAGEBOX( 'Actual Datasession: ' + TRANSFORM(SET("Datasession")) + CHR(13) ;
- + 'lnDataSessionID: ' + TRANSFORM(lnDataSessionID) )
- *-- You can fill the table here.
- INSERT INTO fb2p_dbf (nombre,edad,depto) VALUES ('Fer', 45, 'dpto')
-ENDPROC
-
-
-PROCEDURE p_AfterCreate_DB2
- LPARAMETERS lnDataSessionID, tc_OutputFile, toTable
- MESSAGEBOX( 'Actual Datasession: ' + TRANSFORM(SET("Datasession")) + CHR(13) ;
- + 'lnDataSessionID: ' + TRANSFORM(lnDataSessionID) )
- *-- You can export the data here.
- STRTOFILE( nombre + STR(edad,3) + depto, 'c:\temp\data.txt', 1)
-ENDPROC
-````
-### Language Support for messages
-As for version v1.19.38 FoxBin2Prg messages are available natively on Spanish, English, German and French.
-
-#### Note
-The messages on vbs scripts are not translated (are very few), just the FoxPro ones,
-which have +90% of the messages.
-
-**Want to collaborate translating the messages to your language so others can use it?**
-Just copy the english translation CASE in the final section in FoxBin2Prg.PRG to a new CASE
-with your country code and translate the messages (can be done in 20 minutes or less),
-and send it to me. I will include it in the next release ;-)
-
-#### Note
-.h language files are not supported anymore, and are now implemented inside FoxBin2Prg,
-in the "C_LANG" class at the end of the PRG_
-
-### Multi-config
-Starting at version v1.19.25 FoxBin2Prg allow configuration per directory,
-overriding the main configuration of FoxBin2Prg directory.
-The override is by each setting, so you can reconfigure one or more settings and the
-remaining settings are inherited from main CFG.
-
-From v1.19.42 CFGs are inherited between directories from parent to child,
-so if you have all your developments under, let's say, "c:\devs" directory and subdirs,
-de CFG in "c:\devs" will be inherited on subdirs, and settings can be overriden one by one if you want to.
-This inheritance saves a lot of time and minimizes the CFGs needed \:\)
-
-##### Note
-Options will be read outside in, top to down.
-If an option is defined multiple times, even in the same file, last occurance wins.
-This exception is the group controlling the new style to split DBC files.
-The options _UseFilesPerDBC_, _RedirectFilePerDBCToMain_ and _ItemPerDBCCheck_ will be ignored,
-if _OldFilesPerDBC_ is set to 0.
-If _OldFilesPerDBC_ is set to 0 after it was active, the values of the three options are rejected at all.
-
-### File Capitalization
-FoxBin2Prg takes care of file capitalization (their extension, specifically),
-using another program called ("filename_caps.exe") for capitalizing input files and output files.
-This is because some SCM and DVCS tools are multiplatform, and if you add a "file.ext"
-and later add a "file.EXT" or "File.Ext", the SCM can interpret them as different files,
-because on Unix, Linux, Mac and other sistems, they are.
-If you want a special capitalization (ie: capitalize the full name of the file),
-you can configure this behaviour in "filename_caps.cfg" configuration file, which includes syntax examples.
-File capitalization occurs when you convert a file, but in the case that the input file can't be converted,
-no message error ir thrown (ie: when using the PRG version from VFP Command Line with the form to be converted opened)
-
-### Conversion processes Logging
-If you want detailed process logging of FoxBin2Prg conversions,
-to see all internal processes, decisions and used optimizations, you can enable debugging using
-+debug:1+ in foxbin2prg.cfg configuration file, and a full log is generated on FoxBin2Prg installation directory.
-Debug messages are translated (+90% of debug messages), but capitalization process messages are not,
-and are available just in Spanish (-10% of debug messages).
-
-### Create Class-Per-File
-Starting at v1.19.37 you can configure FoxBin2Prg to generate one class per file using TwoFox naming style "basefile.class.vc2"
-with the value "1"
-To configure this, you must first enable it in foxbin2prg.cfg file:
-````
-*UseClassPerFile: 1 && 0=One library _Text_ file, 1=Multiple file.class.vc2 files, 2=Multiple file.baseclass.class.vc2 files
-````
-In example, if you have a classlib "mylib.vcx" with 3 classes inside ( "cl_1, cl_2, cl_3") then this files are generated:
-
-- mylib.vc2 => Header file, with all conforming classes annotated inside
- - mylib.cl_1.vc2
- - mylib.cl_2.vc2
- - mylib.cl_3.vc2
-#### Important note
-The settings of UseClassPerFile and related options are sensible. If changed the wrong way it's easy to destroy classlibs.
-
-#### Recommended new setting
-Starting at v1.19.42 you can configure FoxBin2Prg to generate one class per file.
-Using the naming style "basefile._baseclass_.class.vc2" with the new value "2".
-
-To configure this, you must first enable it in foxbin2prg.cfg file:
-````
-*UseClassPerFile: 2 && 0=One library _Text_ file, 1=Multiple file.class.vc2 files, 2=Multiple file.baseclass.class.vc2 files,
-including DBC members
-````
-In example, if you have a classlib "mylib.vcx" with 3 classes inside ( "cl_1, cl_2, cl_3") then this files are generated:
-
-- mylib.vc2 => Header file, with all conforming classes annotated inside
- - mylib.custom.cl_1.vc2
- - mylib.form.cl_2.vc2
- - mylib.textbox.cl_3.vc2
-#### Complementary options for the UseClassPerFile setting
-##### RedirectClassPerFileToMain:
-Configuring this setting to 1 will redirect any selection of file[.baseclass].class.vc2
-to the main file.vc2 file, which will not let you generate individual vcx files by mistake.
-RedirectClassType: 1 precedes this setting for files in the
-
-
-##### ClassPerFileCheck
-Configuring this setting to 1 will check the inclusion of all file[.baseclass].class.vc2 files
-annotated on file.vc2 main file, otherwise no checking is made and when reconstructing the vcx/scx all files
-containing the file.class.ext naming will be included in the _Binary_ (useful when you want to add external classes to the library).
-This is only used, if import file is in file[.baseclass].class.tx2 syntax.
-Ignored for RedirectClassType: 2
-
-#### Note
-If you don't use the redirect setting, an individual vcx/scx file will be generated.
-This can be useful if you want to divide a big library in smaller pieces.
-
-#### Note
-This is true for SCX files as well. SCX files may contain a form and a dataenvironment.
-It will create sc2 files.
-
-### Create File-Per-DBC
-Starting at 1.19.55 you can configure FoxBin2Prg to generate one _Text_ file per dbc item using naming style "DatabaseName.item.name.dc2"
-with the value "1"
-To configure this, you must first enable it in foxbin2prg.cfg file:
-````
-*UseFilesPerDBC: 0 && 0=One database dc2 file, 1=Multiple file.*.*.dc2 files
-````
-In example, if you have a classlib "MyData.dbc" with 3 tables inside ( "tl_1, tl_2, tl_3") and stored procedures.
-Then this files are generated:
-
-- MyData.vc2 => Header file, with all database settings and conforming items annotated inside
- - MyData.database.storedproceduressource.dc2 -> stored procedures
- - MyData.table.tl_1.dc2
- - MyData.table.tl_2.dc2
- - MyData.table.tl_3.dc2
-
-#### Complementary options for the UseFilesPerDBC setting
-##### RedirectFilePerDBCToMain
-`*RedirectFilePerDBCToMain 0 && 0=Don't redirect to file.dc2, 1=Redirect to file.tx2 when selecting file.item.*.dc2`
-Configuring this setting to 1 will redirect any selection of DataBaseName.*.dc2
-to the main DataBaseName.dc2 file, which will not let you generate individual DBC files by mistake.
-
-##### ItemPerDBCCheck
-`*ItemPerDBCCheck: 0 && 0=Don't check file.item.*.dc2 inclusion, 1=Check file.item.*.dc2 inclusion`
-Configuring this setting to 1 will check the inclusion of all DataBaseName.*.dc2 files
-annotated on DataBaseName.dc2 main file, otherwise no checking is made and when reconstructing the dbc files
-
-#### Note
-If you don't use the Redirect setting, an individual dbc file will be generated.
-There is no real use of this.
-
-### FoxBin2Prg API
-With v1.19.42 version started an enhanced API support, making public methods that where only for internal use up to now.
-When using FoxBin2Prg as an object, you can access low level functionalities not available when using as external program,
-that allow you to implement your own tools, like the VFP tools I've implemented for working with PlasticSCM.
-
-The return value of `execute()` method, is an error code, where 0 means *No errors*.
-You can also get an Exception reference in case of errors, passing extra parameters as in the next examples.
-
-First you instantiate FoxBin2Prg as object, using this syntax:
-````
-LOCAL loCnv AS c_foxbin2prg OF "\FOXBIN2PRG.PRG" && For Intellisense
-SET PROCEDURE TO "\FOXBIN2PRG.EXE"
-loCnv = CREATEOBJECT("c_foxbin2prg")
-````
-Now some examples:
-
-Convert a file.vcx to text:
-````
-loCnv.execute( "\file.vcx" )
-````
-Generate the _Binary_ classlib from the text file.vc2:
-````
-loCnv.execute( "\file.vc2" )
-````
-Convert all files of a project.pjx to text:
-````
-loCnv.execute( "\project.pjx", "*" )
-````
-Return a `laProc` array of processed forms _**after**_ processing a project:
-````
-DIMENSION laProcs(1,6)
-lnErr = loCnv.execute("C:\DESA\foxbin2prg\TESTS\DATOS_TEST\fb2p_test.pjx", "*", "", "", "1", "0", "1")
-lnCnt = loCnv.get_Processed(@laProcs, "*.scx")
-````
-Return a laProc array of processed classlibs _**before**_ processing a project
-(almost no file processing here, just minimal header reading):
-````
-DIMENSION aProcs(1,6)
-loCnv.l_ProcessFiles = .F.
-lnErr = loCnv.execute("C:\DESA\foxbin2prg\TESTS\DATOS_TEST\fb2p_test.pjx", "*", "", "", "1", "0", "1")
-lnCnt = loCnv.get_Processed(@aProcs, "*.vcx")
-````
-Check if a file has support for converting to text:
-````
-loCnv.evaluateConfiguration( '', '', '', '', '', '', '', '', , 'D' )
-? loCnv.hasSupport_Bin2Prg("\file.vcx")
-? loCnv.hasSupport_Bin2Prg("\file.ppt")
-````
-#### Note
-If you query for support in different subdirectories,
-then you need to call `evaluateConfiguration()` method for refreshing the CFG info that is used by those methods.
-
-Clear the cache of processed files for allowing reprocessing a file:
-````
-loCnv.clearProcessedFiles()
-````
-Get a CFG object with the settings that will be applied to a directory
-````
-oCFG = loCnv.get_DirSettings( "c:\developments\projects\myproj_1" )
-? oCFG.n_UseClassPerFile
-? oCFG.DBF_Conversion_Support
-````
-#### Note
-`get_DirSettings()` method internally calls `evaluateConfiguration()`
-method for refreshing the CFG info before returning the CFG object.
-
-
-Check if a file was processed:
-````
-? loCnv.wasProcessed( "c:\developments\projects\myfile.vcx" )
-````
-Get the internal FoxBin2Prg's Project project of a given PJX and return an array with existence of files on disk:
-````
-STORE null TO oMod, oEx
-DIMENSION aFiles(1,2) && col.1=Name, col.2=File exist on disk
-loCnv.loadModule("c:\developments\projects\myfile.pjx", @oMod, @oEx, .F. )
-nFilesNotFound = oMod.getFilesNotFound(@aFiles)
-FOR I = 1 TO oMod.Count && oMod.Count is the total count of files in the PJX
- ? aFiles(1,2), aFiles(1,1)
-ENDFOR
-````
-
-#### PEM
-This is a list of available methods and properties:
-
-| Method()/Property
Syntax | Description |
-| -| - |
-| **execute**
loCnv.execute( cInputFile [,cType [,cTextName [,lGenText [,cDontShowErrors [,cDebug [,cDontShowProgress [,oModule [,oEx [,lRelanzarError [,cOriginalFileName [,cRecompile [,cNoTimestamps [,cBackupLevels [,cClearUniqueID [,cOptimizeByFilestamp [,cCFG_File](,cType-[,cTextName-[,lGenText-[,cDontShowErrors-[,cDebug-[,cDontShowProgress-[,oModule-[,oEx-[,lRelanzarError-[,cOriginalFileName-[,cRecompile-[,cNoTimestamps-[,cBackupLevels-[,cClearUniqueID-[,cOptimizeByFilestamp-[,cCFG_File ] ] ] ] ] ] ] ] ] ] ] ] ] ] ) | Main execution method to start a conversion
See [Object version](./FoxBin2Prg_Object.md#execute) |
-| **conversionSupportType**
loCnv.conversionSupportType( cFilename ) | Return the code of the support type (0,1,2,4,8) |
-| **get_DBF_Configuration**
loCnv.get_DBF_Configuration( cInputFile, @oOutDbfCfg ) | Returns 1 if a CFG is found for the indicated DBF, or 0 if not |
-| **hasSupport_Bin2Prg**
loCnv.hasSupport_Bin2Prg( cFilename.ext )
loCnv.hasSupport_Bin2Prg( cExt ) | Returns .T. if there is support for converting the file or filetype indicated to _text_ |
-| **hasSupport_Prg2Bin**
loCnv.hasSupport_Prg2Bin( cFilename.ext )
loCnv.hasSupport_Prg2Bin( cExt ) | Returns .T. if there is support for converting the file or filetype indicated to _Binary_ |
-| **evaluateConfiguration**
loCnv.evaluateConfiguration( cDontShowProgress [,cDontShowErrors [,cNoTimestamps [,cDebug [,cRecompile [,cBackupLevels [,cClearUniqueID [,cOptimizeByFilestamp [,cInputFile [,cInputFileTypeType [,cCFG_File](,cDontShowErrors-[,cNoTimestamps-[,cDebug-[,cRecompile-[,cBackupLevels-[,cClearUniqueID-[,cOptimizeByFilestamp-[,cInputFile-[,cInputFileTypeType-[,cCFG_File) ] ] ] ] ] ] ] ] ) | Forces FoxBin2Prg to process the directory indicated in the cInputFile and update any CFG in the directory or their parents |
-| **loadProgressbarForm**
loCnv.loadProgressbarForm() | Load and show the progressbar form as upper level window |
-| **unloadProgressbarForm**
loCnv.unloadProgressbarForm() | Hide and unload the progressbar form |
-| **updateProgressbar**
loCnt.updateProgressbar( cText, nValue, nTotal, nType ) | Update the progressbar and the message. nType indicates which progressbar to update, being 0=1st PB and 1=2nd PB |
-| **get_DirSettings**
loCnv.get_DirSettings( cDir ) | Returns a CFG object with the settings that are applied on the indicated directory |
-| **get_Ext2FromExt**
loCnv.get_Ext2FromExt( cExt ) | Returns the _text extension_ corresponding to the _Binary_ extension indicated |
-| **get_Processed**
loCnv.get_Processed( @aProcessed, cFileMask ) | Returns an array with the status of the files being processed or that will be processed in no-real-process-mode if you set `l_ProcessFiles=.F.` before the call. Columns returned are 6: "cFile, cInOutType, cProcessed, cHasErrors, cSupported, cExpanded"` |
-| **clearProcessedFiles**
loCnv.clearProcessedFiles() | Clear the statistics and the cache about processed files. If a file was processed and is already processed, being not cached will force to process it again |
-| **wasProcessed**
loCnv.wasProcessed( cFile ) | Returns .T. if the fullpath-file was processed, searching in the internal cache |
-
-#### Renamed
-This is the translation table of old method names up to v1.19.41 and the new names:
-
-| Old name | New name |
-| -| - |
-| Ejecutar | Execute |
-| TieneSoporte_** | hasSupport_** |
-| EvaluarConfiguracion | EvaluateConfiguration |
-| AvanceDelProceso | updateProgressbar |
-| cargar_frm_avance | loadProgressbarForm |
-| descargar_frm_avance | unloadProgressbarForm |
-
-#### Note
-Any method or property not documented in this help, could be renamed, changed or deleted, so please, do not use it_
-
-### Log to StdOut
-When running from a DOS window, you can get the output to console (same order as array obtained with get_Processed method,
-except that element 1 \[filename\] is shown last):
-
-````
-C:\DESA\foxbin2prg>foxbin2prg.exe "tests\datos_test\fb2p_dbc.dbc" | find /V
-````
-
-````
-I,P1,E0,S1,X0,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.dbc
-O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.dc2
-O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.connection.remote_connection_dbf.dc2
-O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.connection.remote_connection_oracle.dc2
-O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.table.fb2p_depto.dc2
-O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.table.nombrelargodeldbf.dc2
-O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.rv_db_debug_setup.dc2
-O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vista_local.dc2
-O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vw_local_encuestas.dc2
-O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vw_ora_convenios.dc2
-O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.view.vw_ora_dual.dc2
-O,P1,E0,S1,X1,c:\desa\foxbin2prg\tests\datos_test\fb2p_dbc.database.storedproceduressource.dc2
-````
-
-#### First line
-The first line means:
-Input file (**I**), Processed (**P1**), Without Errors (**E0**), Supported (**S1**), Not Extended file (**X0**) and the full path filename.
-
-#### Last line
-The last line means:
-Output file (**O**), Processed (**P1**), Without Errors (**E0**), Supported (**S1**), Extended file (**X1**) and the full path filename.
-
-## How to use with a SCM tool
-### Note
-This chapter is without function if the only the _Text_ files are in the source control.
-
-Here we need to identify 2 distinct operations: checkin because a _Binary_ modification with the IDE
-and checkin because a merge operation.
-
-### Checkin because a _Binary_ modification within the IDE
-When you work with the VFP 9 IDE, you modify the _Binary_ files (forms, classlib and the like),
-then you checkin your modifications, but before doing this you generate the _Text_ files +just for the changed _Binaries_+,
-and once you have all the boundles of _Binaries_/_Text_, you checkin them.
-#### Note:
-If any _Binary_ doesn't have the corresponding _Text_ file,
-it can be because it is in use (close opened _Binariy_ and CLEAR ALL at VFP command window),
-or because you really haven't made any changes to the code,
-in which case you should undo the changes to the _Binaries_ that don't have their _Text_ files using the "undo" option
-for these files of your SCM tool.
-
-
-### Checkin because a merge operation
-When you merge a branch, you work on _Text_ files seeing and merging differences manually or automatically.
-When you have done with the merge you need to checkin, but before this,
-you need to generate the _Binaries_ (forms, classlib, etc) just from the _Text_ files merged, to sync their code.
-Once you have done, then you checkin the boundle of _Binaries_/_Text_.
-#### Note
-If at the end of a merge operation there are _Binaries_ left, you need to choose the "workspace binaries",
-because anyway you will generate them later from their _Text_ files.
-
-
-For options on integrating FoxBin2Prg with SCM tools, look at this topic:
-**> [FoxBin2Prg and use with SCM tools](./FoxBin2Prg_SCM.md)**
-
-## How to use with _git_
-See [FoxBin2Prg and use with git](./FoxBin2Prg_git.md)
-
-----
-
-This project is part of [VFPX](https://vfpx.github.io/).
-
-----
-Last changed: _2022/06/10_ 
\ No newline at end of file
diff --git a/docs/FoxBin2Prg_Object.md b/docs/FoxBin2Prg_Object.md
deleted file mode 100644
index d7535f3..0000000
--- a/docs/FoxBin2Prg_Object.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# Usage in object style
-Documentation of FoxBin2Prg - A Binary to Text converter for MS Visual Foxpro 9
-
-## Purpose of this document
-FoxBin2Prg might be used as an EXE either from Windows or VFP, or as as prg from inside VFP in a [command line](./FoxBin2Prg_Run.md) way.
-This document deals with the integration as an VFP Object using VFP based objects.
-
-For settings, API and other realted stuff see [Internals](./FoxBin2Prg_Internals.md).
-
-The original document was created by [Fernando D. Bozzo](https://github.com/fdbozzo) whom I like to thank for the great project.
-Pictures are taken from the original project.
-As far as possible these are the original documents. Changes are added where functionality is changed.
-
-----
-## Table of contents
-- [Usage](#usage)
- - [Instantiating](#instantiating)
- - [Execute](#execute)
-- [Return values](#return-values)
-
-----
-## Usage
-### Instantiating
-Basically, the instantiating of FoxBinPrg is straight forward:
-```
-*-- Instancing directly from the EXE (fastest way, only EXE needed)
-LOCAL loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG"
-SET PROCEDURE TO "\FOXBIN2PRG.EXE"
-loCnv = CREATEOBJECT("c_foxbin2prg")
-loCnv.execute( )
-```
--or this way also-
-```
-*-- Instancing from the PRG (you also need various files, like the 27 props*.txt)
-LOCAL loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG"
-loCnv = NEWOBJECT("c_foxbin2prg", "\FOXBIN2PRG.PRG")
-loCnv.execute( )
-```
-
-### Execute
-Transforming file(s) works like
-`obj.execute(cInputFile [,cType [,cTextName [,lGenText [,cDontShowErrors [,cDebug [,cDontShowProgress [,oModule [,oEx [,lRelanzarError [,cOriginalFileName [,cRecompile [,cNoTimestamps [,cBackupLevels [,cClearUniqueID [,cOptimizeByFilestamp [,cCFG_File] ] ] ] ] ] ] ] ] ] ] ] ] ] ])`
-A lot of the parameters are the same as calling the [command line](./FoxBin2Prg_Run.md),
-some additional are added and some are not string type.
-Some settings will overwrite configuration. Using an object as cCFG_File will overwrite all configuration.
-
-| Parameter | Value (_Default_) | Description |
-| ----- | ----- | ----- |
-| cInputFile | fullpath | Full name of the file to convert or directory name to process
without any other parameter given, the extension (and the config) defines the operation|
-| | _FileName::ClassName_ | If option UseClassPerFile is 1 or 2, a class-file will be extracted from the lib |
-| cType | empty | Fileextension of _cInputFile_ defines operation |
-| | BIN2PRG | _cInputFile_ is processed for generating a _Text_ representation. |
-| | PRG2BIN | _cInputFile_ is processed for generating the _Binary_ file(s). |
-| | INTERACTIVE | A confirmation dialog will be shown when processing a directory asking what to convert.
This option overrides the _BIN2PRG_ and _PRG2BIN_ parameters.
Can be used with or without _PRG2BIN_ or _BIN2PRG_ |
-| | SHOWMSG | A status message will be shown on termination. |
-| | * | If _cInputFile_ is a project (pj[x2]) all files of the project, **including** the pjx, will be processed. The extension defines direction of operation. |
-| | \*\- | If _cInputFile_ is a project (pj[x2]) all files of the project, **excluding** the pjx, will be processed. The extension defines direction of operation. |
-| | d, D, K, B, M, R, V | SCCAPI (SCCTEXT.PRG) compatibility mode, query the conversion support for the file type specified
Types: d=DBC, D=DBF, K=Form, B=Label, M=Menu, R=Report, V=Class |
-| | -C | Create configuration file \ or, if first parameter is empty, FoxBin2Prg._cfg in default folder. With recent values. |
-| | -c | Create configuration file template \ or, if first parameter is empty, FoxBin2Prg._cfg in default folder. With inactive default values. |
-| | -t | Create per-table configuration file template or, if first parameter is empty and a table open, \._cfg in table folder. With inactive default values. |
-| cTextName | Text filename. | Only for SCCAPI (SCCTEXT.PRG) compatibility mode. File to use. |
-| lGenText | .T., .F. | Only for SCCAPI (SCCTEXT.PRG) compatibility mode. .T.=Generates Text, .F.=Generates Binary.
**Note:** _cType_ have predominance over _lGenText_ |
-| cDontShowErrors | _0_, 1 | '1' for NOT showing errors in MESSAGEBOX |
-| cDebug | _0_, 1, 2 | '0 'no debug, '1' for generating process LOGs, stop on errors, '2' like '1' and special log. |
-| 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 |
-| lRelanzarError | .T.. _.F._ | Throw error to caller of _.Execute()_ |
-| 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. |
-| | path | The binary is compiled from this path |
-| cNoTimestamps | 0, _1_ | Indicates if timestamp must be cleared ('1' or empty) or not ('0') |
-| cBackupLevels | 0, _1_, .. | "0" no Bakup, "1", one level _filename_.bak, "n" n levels of Backup _filename_.n.bak |
-| cClearUniqueID | 0, _1_ | 0=Keep UniqueID in text files, 1=Clear Unique ID. Useful for Diff and Merge |
-| cOptimizeByFilestamp | _0_, 1 | 1=Optimize file regeneration depending on file timestamp.
Dangerous while working with branches! |
-| cCFG_File | filename | Indicates a CFG filename for not using the default on foxbin2prg directory or path. |
-| | object | An object containing configuration options to use. See [Internals](./FoxBin2Prg_Internals.md) for object creation. |
-
-#### cOutputFolder
-The procedural call of FoxBin2Prg like
-`FoxBin2Prg.EXE cInputFile ...` exposes a parameter _cOutputFolder_.
-This parameter is not available in this call. To set _cOutputFolder_:
-````
-obj.cOutputFolder = cOutputFolder
-obj.execute(...)
-````
-
-#### Note
-The _BIN2PRG, PRG2BIN, INTERACTIVE, SHOWMSG_ cTypes might be mixed freely like:
-`PRG2BIN-INTERACTIVE`
-`BIN2PRG-INTERACTIVE-SHOWMSG`
-
-#### Note
-- The swap of _cInputFile_ and _cType_ is not possible here.
-- If cType is -cCt, then only the first both parameters are allowed.
-- Setting _cInputFile_ and _cType_ appropriate, info screen and generation of configuration templates is possible too. See [command line](./FoxBin2Prg_Run.md#usage_1)
-- While possibe, the SCCAPI (SCCTEXT.PRG) compatibility mode is more an idea of the [command line](./FoxBin2Prg_Run.md).
-
-## Return values
-Return value is 0=OK, 1=Error.
-
-----
-
-This project is part of [VFPX](https://vfpx.github.io/).
-
-----
-Last changed: _2021/03/18_ 
\ No newline at end of file
diff --git a/docs/FoxBin2Prg_Run.md b/docs/FoxBin2Prg_Run.md
deleted file mode 100644
index 0c35638..0000000
--- a/docs/FoxBin2Prg_Run.md
+++ /dev/null
@@ -1,175 +0,0 @@
-# Usage in command line style
-Documentation of FoxBin2Prg - A Binary to Text converter for MS Visual Foxpro 9
-
-## Purpose of this document
-This document shows how to run FoxBin2Prg from MS Windows Commandline, VFP's Command window or as SendTo.
-
-The original document was created by [Fernando D. Bozzo](https://github.com/fdbozzo) whom I like to thank for the great project.
-Pictures are taken from the original project.
-As far as possible these are the original documents. Changes are added where functionality is changed.
-
-----
-## Table of contents
-- [Run FoxBin2Prg](#run-foxbin2prg)
-- [Differences on excecution](#differences-on-excecution)
-- [EXE](#exe)
-- [PRG](#prg)
-- [Parameters](#parameters)
-- [Usage](#usage)
-- [Return values](#return-values)
-- [Examples](#Examples)
-- [Explorer SendTo](#explorer-sendto)
-
-----
-## Run FoxBin2Prg
-FoxBin2Prg might be used as an EXE either from Windows or VFP, or as as prg from inside VFP.
-Additional it might be integrated as an VFP Object using the [Object version](./FoxBin2Prg_Object.md).
-Since the EXE is basically the prg packed with some controling files, the way to call it ist mostly similar.
-The knowledge of differences in calling, DO .. WITH syntax separating parameters with "," and the DOS way off calling will be assumed.
-Do the similarity of the call, the prg version takes all parameters as strings too.
-
-For settings and other related stuff see [Internals](./FoxBin2Prg_Internals.md).
-
-## Differences on excecution
-### EXE
-The exe contains the most controling structures and the program itself.
-Alongside the _FoxBin2Prg.exe_ must be _\_FileName\_Caps.exe_ .
-It is recomended to have a general _FoxBin2Prg.cfg_ configuration file in the folder with the EXE, but it will run without.
-
-Remember, the Exe needs to be created first.
-
-### PRG
-The prg is just the program and needs to find the controling structures. In particular:
-- _FileName_Caps.exe_
-- _Props*.txt_
-- _FileName_Caps.exe_
-- _FoxBin2Prg.cfg_ is recomended
-
-#### Note
-All mentioned files need to be in the same folder. You can't use just the PRG without the rest of the mentioned files.
-
-## Parameters
-`FoxBin2Prg.EXE ...`
-could be used from VFP command line as
-`DO FoxBin2Prg.EXE WITH ...`
-or
-`DO FoxBin2Prg.prg WITH ...`
-or via _RUN_ or more sophisticated ways.
-
-Remember that using the prg style, parameters must be wrapped in string delimiters.
-
-#### Note
-Do to the compatibility with VSS the usage of _cInputFile_ and _cType_ is odd.
-
-#### Important note:
-When you process a directory, it is used as the base for the compilation of _Binaries_,
-and because of this, never process more than one directory in the same process,
-because the compilation may not be ok. To process more than one directory (or project),
-just select and process each one independently, in parallel if you like, but in different processes.
-
-## Usage
-### Usage 1
-`FoxBin2Prg.EXE cInputFile [,cType [,cTextName [,lGenText [,cDontShowErrors [,cDebug [,cDontShowProgress [,cOriginalFileName [,cRecompile [,cNoTimestamps [,cCFG_File [,cOutputFolder ] ] ] ] ] ] ] ] ] ] ] ]`
-
-| Parameter | Value (_Default_) | Description |
-| ----- | ----- | ----- |
-| cInputFile | ? / interactive | Call interactive list of parameters |
-| | fullpath | Full name of the file to convert or directory name to process
without any other parameter given, the extension (and the config) defines the operation |
-| | _FileName::ClassName_ | If option UseClassPerFile is 1 or 2, a class-file will be extracted from the lib |
-| cType | _empty_ | Fileextension of _cInputFile_ defines operation |
-| | BIN2PRG | _cInputFile_ is processed for generating a _Text_ representation. |
-| | PRG2BIN | _cInputFile_ is processed for generating the _Binary_ file(s). |
-| | INTERACTIVE | A confirmation dialog will be shown when processing a directory asking what to convert.
This option overrides the _BIN2PRG_ and _PRG2BIN_ parameters.
Can be used with or without _PRG2BIN_ or _BIN2PRG_ |
-| | SHOWMSG | A status message will be shown on termination. |
-| | * | If _cInputFile_ is a project (pj[x2]) all files of the project, **including** the pjx, will be processed. The extension defines direction of operation. |
-| | \*\- | If _cInputFile_ is a project (pj[x2]) all files of the project, **excluding** the pjx, will be processed. The extension defines direction of operation. |
-| | d, D, K, B, M, R, V | SCCAPI (SCCTEXT.PRG) compatibility mode, query the conversion support for the file type specified
Types: d=DBC, D=DBF, K=Form, B=Label, M=Menu, R=Report, V=Class |
-| 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. |
-| 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. |
-| | path | The _Binary_ is compiled from this path |
-| cNoTimestamps | 0, _1_ | Indicates if timestamp must be cleared ('1' or empty) or not ('0') |
-| cCFG_File | filename | Indicates a CFG filename for not using the default on foxbin2prg directory or path. |
-| cOutputFolder | folder | Optional. A folder to write the output to. If not used, output be the source path. |
-
-#### Note #1
-The _BIN2PRG, PRG2BIN, INTERACTIVE, SHOWMSG_ cTypes might be mixed freely like:
-`PRG2BIN-INTERACTIVE`
-`BIN2PRG-INTERACTIVE-SHOWMSG`
-
-#### Note #2
-On any combination of (_BIN2PRG_, _PRG2BIN_, _INTERACTIVE_, _SHOWMSG_) separated by a "-", _cType_ and _cInputFile_ parameters can be swapped.
-This is useful when used as EXE dealing with Windows shortcuts,
-on which fixed parameters must be in the shortcut.
-The filename is an external variable parameter received when SendingTo FoxBin2Prg with right-click on File Manager.
-
-### Usage 2
-`FoxBin2Prg.EXE [cCt [cOutputFile]]`
-`DO FoxBin2Prg.EXE WITH ["-cCt" [,cOutputFile]]`
-
-| Parameter | Description |
-| ----- | ----- |
-| none | Call Info screen |
-| -c (c) | creates a template config-file _cOutputFile_ ( like FOXBIN2PRG.CFG ) |
-| -C (C) | creates a config-file _cOutputFile_ ( like FOXBIN2PRG.CFG ) with the recent options used on the path of cOutputFile |
-| | If cOutputFile is empty, a file FOXBIN2PRG.\_CFG will be created in default foder. |
-| -t (t) | creates a template table-config-file _cOutputFile_ ( like \_TableName\_.dbf.cfg ) |
-| | If cOutputFile is empty and a table is open is workarea, a file \.CFG will be created in table foder. |
-
-#### Note
-From command line the call with paramters like -c, -C -t is not possible. Those parameters will be removed by VFP itself.
-Just call without the dash.
-Calling inside VFP with `DO FoxBin2Prg.EXE` works with this dashed parameters.
-
-## Return values
-Return value via _ErrorLevel_ is 0=OK, 1=Error.
-
-## Examples
-### Using the "EXE" version: (useful for calling from 3rd party programs)
-
-| command | description |
-| - | - |
-| `FOXBIN2PRG.EXE "\file.scx"` | Generates the _Text_ version |
-| `FOXBIN2PRG.EXE "\file.sc2"` | Generates the _Binary_ version |
-| `FOXBIN2PRG.EXE "\proj.pjx" "*"` | Generates the _Text_ files for all the files in the PJX, including the PJX |
-| `FOXBIN2PRG.EXE "\proj.pj2" "*"` | Generates the _Binary_ files for all the files in the PJ2 |
-| `FOXBIN2PRG.EXE "\proj.pjx" "*-"` | Generates the _Text_ files for all the files in the PJX, excluding the PJX |
-| `FOXBIN2PRG.EXE "\file.vcx::cus_client"` | Generates only the _Text_ version of the individual class cus_client of file.vcx (with UseClassPerFile:1 or 2) |
-| `FOXBIN2PRG.EXE "\proj.pj2" "*" \| find /V ""` | Generates the _Binary_ files for all the files in the PJ2 and outputs to stdOut |
-
-### Using the "PRG" version:
-
-| command | description |
-| - | - |
-| `DO FOXBIN2PRG.PRG WITH "\file.scx"` | Generates the _Text_ version |
-| `DO FOXBIN2PRG.PRG WITH "\file.sc2"` | Generates the _Binary_ version |
-| `DO FOXBIN2PRG.PRG WITH "\proj.pjx", "*"` | Generates the _Text_ files for all the files in the PJX, including the PJX |
-| `DO FOXBIN2PRG.PRG WITH "\proj.pj2", "*"` | Generates the _Binary_ files for all the files in the PJ2 |
-| `DO FOXBIN2PRG.PRG WITH "\proj.pjx", "*-"` | Generates the _Text_ files for all the files in the PJX, excluding the PJX |
-| `DO FOXBIN2PRG.PRG WITH "\file.vcx::cus_client"` | Generates only the _Text_ version of the individual class cus_client of file.vcx (with UseClassPerFile:1 or 2) |
-| `DO FOXBIN2PRG.PRG WITH "\file.cus_client.vc2"` | Generates only the _Binary_ version of the individual class cus_client of file.vcx (with UseClassPerFile:1 and RedirectClassType:2) |
-| `DO FOXBIN2PRG.PRG WITH "\file.vc2::cus_client::import"` | Generates only the _Binary_ version of the individual class cus_client of file.vcx (with UseClassPerFile:1) |
-
-## Explorer SendTo
-To use _FoxBin2Prg_ from the File Explorer, you can create 3 shortcuts of FoxBin2Prg.exe and move them to "SendTo" folder on your Windows profile.
-Hint: **type _shell:sendto_ in File Explorer's address bar and it will open send to folder**,
-so you can "send" the selected file (pjx,pj2,etc) to the selected option,
-and make on-the-fly conversions,
-then rename and edit those shortcuts as this (make sure you can see system file extensions):
-```
-Name------------------------ Right-click/Properties/destination-----------
-FoxBin2Prg - Binary2Text.lnk \foxbin2prg.exe "BIN2PRG-SHOWMSG"
-FoxBin2Prg - Text2Binary.lnk \foxbin2prg.exe "PRG2BIN-SHOWMSG"
-FoxBin2Prg.lnk \foxbin2prg.exe "INTERACTIVE-SHOWMSG"
-```
-
-----
-
-This project is part of [VFPX](https://vfpx.github.io/).
-
-----
-Last changed: _2022/06/10_ 
\ No newline at end of file
diff --git a/docs/FoxBin2Prg_SCM.md b/docs/FoxBin2Prg_SCM.md
deleted file mode 100644
index 40b9954..0000000
--- a/docs/FoxBin2Prg_SCM.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# Use with SCM
-Documentation of FoxBin2Prg - A Binary to Text converter for MS Visual Foxpro 9
-
-## Purpose of this document
-Using FoxPin2Prg with SCM.
-See [use with git](./FoxBin2Prg_git.md)
-
-The original document was created by [Fernando D. Bozzo](https://github.com/fdbozzo) whom I like to thank for the great project.
-Pictures are taken from the original project.
-As far as possible these are the original documents. Changes are added where functionality is changed.
-
-----
-## Table of contents
-- [Remark](#remark)
-- [A short mention on SourceSafe](#a-short-mention-on-sourcesafe)
-
-## Remark
-**This is article is a stub.**
-
-If you like to use this tool with non SCM tools like [_git_](git-scm.com/),
-have a look on [VFPX](https://vfpx.github.io/projects/), there are some that integrate _git_ and _FoxBin2Prg_ into VFP IDE.
-
-## A short mention on SourceSafe
-For those who keep using it, I recommend running away from it to any other modern SCM out there.
-Main reason is that Microsoft doesn't support it anymore,
-which last version was released in 2005 (Visual SourceSafe 2005, that many people didn't know of) and a lot of people keep using the version that came with Visual Studio 6, released in 1998! (more or less).
-(It was nice in the time there was nothing different on Win, in special not this tool.)
-
-It have a big scalability problem, doesn't guarantee the history integrity and it is not client-server,
-which is crucial on any modern SCM.
-It's simply too easy to mess with the history and delete files from it manually,
-or have a corrupted database because a number of reasons, as virus on some client PC,
-hardware problems or network problems, and in many cases this errors are irrecoverable.
-Try to run it on a cheap NAS, it's nothing then a pain.
-
-If, despite the warning, you have no other choice that keep using it,
-then you must know that FoxBin2Prg have integration with it,
-thanks to the configuration file foxbin2prg.cfg and the capability to change default extensions from tx2 to txa (sc2>sca, and so on).
-In fact you can merge binaries as you probably have never seen :-)
-
-----
-People that came from SourceSafe, often tends to think of SCM tools as repositories of code,
-because of the limitations everybody that used SourceSafe knows,
-but the reality is that a SCM tool is much more than a repository of code,
-using a SCM tool with FoxBin2Prg you:
-
-* Can Manage the life cycle of an application
-* Can compare the binaries, using prg-style representations, to know what have changed at any time in the history of the application
-* Can know who have changed what at a code line level
-* Can have various stats, as how many changes have been done between past release and this release, even by component
-* Can have a team of developers that can work on the same components (forms, classlibs, menus, etc) and can concurrently merge there code and get a functional binary of this merge without blocking each other
-* Can work on parallel versions (this release, next release, many releases, patches) using branches
-* I reapeat: You can use branches as other languages can do from many years, but FoxPro couldn't, up until now
-* Can have the option to develop in geographically distributed projects. This allows that you can work on your house and I in mine and we can share the repository, ie, using GitHub or BitBucket as intermediary
-* Can have the option to synchronize the source code repository with other repositories, for backup purposes or other reasons
-* Can have the option to "undo" a merge using a substractive-merge that affects various components, with safety
-* Can be free of privative formats and use something else that can be used with more than one SCM tool. SourceSafe is the only that understand SourceSafe, so you are a prisoner
-* In summary, you are in control of all aspects of a VFP system and there releases and changes
-
-This documentation is to help configure FoxBin2Prg with some modern SCM tools,
-beginning with the SCM tool I'm using (PlasticSCM) from middle 2013
-and that I personally think is the most advanced SCM tool y know until now.
-
-In this first quick-guide I will explain what is PlasticSCM,
-how to configure and how to begin working with Visual FoxPro 9 projects using branch-per-task.
-
-**Part of this guide can be used with any modern SCM tool, and over time I can add documentation or links for using FoxBin2Prg with other SCM tools.**
-
-If you already are using FoxBin2Prg with another SCM tool,
-feel free to share how you are using it so others can benefit.
-
-- [Using FoxBin2Prg with PlasticSCM](Using-FoxBin2Prg-with-PlasticSCM)
-
-----
-
-This project is part of [VFPX](https://vfpx.github.io/).
-
-----
-Last changed: _2021/03/03_ 
\ No newline at end of file
diff --git a/docs/FoxBin2Prg_git.md b/docs/FoxBin2Prg_git.md
deleted file mode 100644
index 165afbe..0000000
--- a/docs/FoxBin2Prg_git.md
+++ /dev/null
@@ -1,422 +0,0 @@
-# Use with git
-Documentation of FoxBin2Prg - A Binary to Text converter for MS Visual Foxpro 9
-
-## Purpose of this document
-Using FoxBin2Prg with git.
-See [Use with SCM tools](./FoxBin2Prg_SCM.md)
-
-----
-## Table of contents
-- [Introduction](#introduction)
-- [Requirements](#requirements)
-- [Tools](#tools)
-- [Recomendations](#recomendations)
- - [git settings](#git-settings)
- - [settings per project](#settings-per-project)
- - [gitignore](#gitignore)
- - [gitattributes](#gitattributes)
- - [config](#foxbin2prg-config)
-
-## Introduction
-As we all know, there is a whole bunch of tools that we might use to colaborate and to version our work.
-Since I use git I try to point out what I do to do as fast and comfortable work.
-This document gives no workflow, in special not a workflow of git. There is no wrong or right.
-If you are not familar with git, please read through this first, there are minor settings that might help a bit on later work.
-
-Please note, if you come from a SCM system, git feels very odd. It's a complete different idea of thinking.
-Do yourself the favour, on [git-scm](https://git-scm.com/doc) you find _pro git_. Read and work at least through the first three chapters.
-**No matter, if you are using git on bash or GUI**
-
-There is a bunch of common traps to avoid - like storing credentials to github - I recommend [Oh my git!](https://ohmygit.org/) too.
-
-For almost anything you don't need a server, even for colaborating a storage is enough.
-I use a server - a self hosted copy of gitlab - but this basically for access restrictions and remote work.
-
-Do not hesitate to try anything. Always remember, git is just a couple of files inside your project folder.
-CTRL+C, CTRL+V on Explorer might save the day. ;)
-
-## Requirements
-### #1
-A copy of FoxBin2Prg.
-Or Install via [Thor](https://github.com/VFPX/Thor/blob/master/Docs/Thor_install.md), this keeps you on the latest version.
-
-### #2
-It might be a good idea to have a copy of git.
-If you [download](https://git-scm.org) a setup or clone the code and compile yourself is up to you.
-I prefer the setup - it's a nice package with all bells and whistles one might need on command line.
-See [git settings](#git-settings) for stuff to set during setup.
-
-### #3
-I prefer it on the bash. Some of the reasons
-- It's complex. If a GUI does something wrong, you need to go to the bash anyway.
- - Note, every git-GUI is simple a tool that needs git to run original commands.
-- It's simple. For day to day work, it's some easy to learn commands.
-- The little visual need I have, and yes, some commands too, run on gitk, what ships with git for windows
-- bash, because all help out of the web comes in 'nix style, rethink to the windows world is to much work.
-- working on the command line gives ideas of doing the stuff using the Fox, and we are programmmers, are we?
-- since we have those extra step to create _Text_ and _Binary_ around the git repo, any GUI is awkward.
-
-The use of git on the command line is not a taste all like.
-So if you need a GUI tool, it's your choice. [git-scm.org](https://git-scm.org) list a lot, and there might be more out.
-Or use the Fox and build your own - it's nothing then some commands and handling text files.
-
-## Tools
-To integrate git into the Fox [VFPX](https://vfpx.github.io/) lists some tools.
-I'm somehow into the [Bin 2 Text extension](https://github.com/lscheffler/bin2text), but then I know this best.
-
-A nice graphical compare / mergetool is nice too have - check if and how to integrate first,
-and also if the code monkey creating the interface understands git.
-Some try to use it like SCM, what ends up odd.
-
-## Recomendations
-#### Short about git
-The first one must understand here, git is set up to deal with text based files.
-It's a Linux tool developed to deal with Linux - the Kernel code.
-Highly sophisticated, neat, fast.
-So storing binaries into it is something one should avoid as far as possible.
-
-There is stuff where one might not circumvent it - like pictures.
-
-#### Text representation of VFP's binaries
-And there is the oddness of VFP sources. Storing those to git is as wrong as it could be.
-- Bloat of the repo
-- No trace of changes
-- Not mergeable
-
-And if there is one what is realy cool on skipping locking servers, it's colaboarting.
-Even on VCX's.
-
-#### Solution
-With thanks to Fernando **FoxBin2Prg** comes into play.
-One might be reluctant to dropping the binaries - but I do for years and it works like a charm.
-Do not play around with text-to-look-up-changes ideas storing both _Text_ and _Binary_.
-Just merge, compare like a normal text based language.
-The only thing one must learn (and remember, even after odd merges) is to run FoxBin2Prg wrapping any git operation.
-
-git would even allow to hook FoxBin2Prg to run after some git operations, but this might be a killer.
-
-I try to show what to set to keep it running as _Text_ - only storage.
-
-#### Class libraries
-I know there is a lot how to store a class. Microseconds here and there.
-Folks, hardware is cheap. There is no sense in counting ticks and bits any more. I'm grown up that way, but.
-Dealing with the FoxBin2Prg.prg is the limit.
-If I imagine to have one of my larger vcx's like this in a merge view - no.
-
-Just split up the vcx's into single classes using FoxBin2Prg for git purposes. It's like a charm on merge and diff.
-Also on blame.
-If you go for the _lib.baseclass.classname.vc2_ or _lib.classname.vc2_ style is a matter of taste.
-I can see baseclass on classname, so there is not much value, other might think different.
-But split into classes makes life easy.
-This is to be done in the [config file](#foxbin2prg-config), setting _UseClassPerFile_ option to 1 or 2.
-
-#### Forms
-Side effect of splitting VCX is that SCX will be split into 3 files too.
-I have no idea if there is some use of it - I just do classes.
-If you like it separated from VCX - let me know.
-
-#### Databases
-Splitting DBC is possible too. My approach does not touch the DBC _structure_ (it's meta data only) in the source over decades,
-so there is little use.
-So I've added an option to inhibit splitting DBC while splitting VCX/SCX.
-
-#### Tables
-Since nobody brought up the .NULL. problem, it looks like it's not commonly used. It works for me for a while now and I found no problems so far.
-
-##### Note
-I do DBF / DBC to text and vice versa for a while now, but still with the binaries. I found no problem yet, except the binaries are a pain on merges.
-What I see is that a synthetic PK is helpfull, not all the lookups had one. So I added one just for the purpose of merging.
-
-#### Others
-All the other table-based-sources of VFP work seamless as _Text_. No fuzz.
-
-### git settings
-Those settings are mainly per user (in _git_ terms **global**)
-
-----
-Assuming you do a fresh install of git, you will be asked questions over questions. The most you left unchanged.
-The one I recommend is the dealing with line endings. You know all the odd uses of LF and CR.
-_git_ offers to alter this while dealing with your files. I recommend not.
-Just "Check in as is, check out as is" while installing _git for windows_.
-This will keep your files, and any modern editor or WEB UI will not care anyway.
-If you missed on install - just install again.
-
-Do not forget to set up username, email and a ssh key. The following script sets up git and creates the key.
-It will copy the public key to _clipboard_ too - ready to paste into github. Anyway, you allways can copy the contents of `~/.ssh/id_rsa.pub`.
-Note, this will clear data, so do not run twice or on the wrong comp. A key overwritten is lost!
-````
-#!/bin/sh
-#--------------------------------------------
-# create_rsa.sh
-#
-# Abstract:
-# create an rsa ssh key an ~/.ssh
-# with options to git
-#
-# set email and domain in this file
-#
-# Written by SF
-# May 2018
-#--------------------------------------------
-
-user=="your name"
-email="$user@$domain"
-
-cd ~
-if test -d .ssh
-then
- cd .ssh
- rm id_rsa.*
- rm id_rsa
-else
- mkdir .ssh
- cd .ssh
-fi
-
-ssh-keygen -t rsa -b 4096 -C "$email"
-cat ~/.ssh/id_rsa.pub | clip
-
-git config --global user.name "$user"
-git config --global user.email "$email"
-````
-Depending on your needs you might set a password or not.
-
-#### Note
-For some odd reasons, the people on git-scm are going the way of evil. If you start the Setup of git, all depends who you are.
-If you not check _Run as Adminstrator_, it will install into your user folder. Even if installed in Programs folder earlier!
-
-### Settings per project
-Those settings are mainly per project (in _git_ terms **local**). One can argue to put the one or other in different levels.
-I recommend those inside the project to keep the repository as self contained as possible.
-#### gitignore
-The _.gitignore_ file controls which files **go not** into the git repository by default. It goes by folder with inheritance.
-If you understand the inheritance of .gitignore, you grok [FoXBin2Prg.cfg](#foxbin2prg-config) and vice versa. Very close.
-
-But git would not be git if one could not teach .gitignore to define the files **included**.
-Again, see pro-git.
-
-Creating the file might be a bit odd on MS Windows (Windows dislikes just extension). Created once, most editors will not complain.
-In case, just open the bash in your projects base folder (Explorer, context menu) and enter `touch .gitignore`.
-
-An example for _Text_ only use.
-````
-#.gitignore
-#exclude general
-*.*
-
-#include general
-#dbx data
-!*.dbf
-!*.cdx
-!*.fpt
-
-!*.dbc
-!*.dc[tx]
-
-#grafics
-!*.bmp
-!*.msk
-!*.ico
-!*.cdr
-!*.cur
-
-#programms
-!*.prg
-!*.fpw
-
-#header
-!*.h
-
-#libs (by FoxBin2Prg)
-#!*.vc[xt]
-#!*.pj[xt]
-#!*.fr[xt]
-#!*.mn[xt]
-#!*.sc[xt]
-#!*.lb[xt]
-
-#FoxBin2Prg
-!*.vc2
-!*.pj2
-!*.fr2
-!*.mn2
-!*.sc2
-!*.lb2
-#!*.d[bc]2
-
-#include special
-#default git
-!*.gitignore
-!*.gitattributes
-!/desktop.ini
-#desktop.ini. usless? no! it keeeps the folder icon!
-
-#diverse
-!*.reg
-!/FoxBin2Prg.cfg
-!README.md
-
-#exclude special again
-foxuser.*
-_command.prg
-````
-As you see, this assumes that tables and databases are stored as binary.
-I think I will swap to use them as _Text_ too, since version 1.19.55 of FoxBin2Prg eleminates some problems with this idea.
-
-Also this approach ignores any bak / log / tmp / err files by default.
-
-#### gitattributes
-The _.gitattributes_ file controls some things that might be set to as local computer / user / repository (via _git config_),
-but should be constant to the repository, no matter the local settings. This file is included into the repository.
-for VFP purposes, it controls the processing of line ending on commit / checkout.
-As mentioned [above](#git-settings) git might manipulate CRLF and LF. If the settings are different on different computers ,
-it might checkout with LF instead of CRLF. This creates useless files in the commit, but also might create havoc using the files.
-See [this](https://github.com/VFPX/GoFish/issues/27) for an example.
-To solve this, add a _.gitattributes_ file to any of your projects, next to the _.gitignore_ file. It should look like this:
-````
-#.gitattributes
-# disable newline conversion on checkout with no conversion on check-in for all files
-* -text
-````
-If you have a project running, check the line endings and make shure they follow DOS standard CRLF.
-
-#### FoxBin2Prg config
-The config of FoxBin2Prg using FoxBin2Prg.cfg files is relative simple. As you might see above, I carry the file within the repo.
-The good on this is, if I change my mind and alter settings in it, FoxBin2Prg will find the setting that fit to the data on each commit.
-If I have to checkout old stuff - the setting will fit.
-
-````
-*################################################################################################################
-*FOXBIN2PRG.CFG configuration options: (If no values given, these are the DEFAULTS)
-*Version: v1.19.69
-*****************************************************************************************************************
-
-* Note, configuration files will follow an inheritance.
-* 1. Default values
-* 2., optional FOXBIN2PRG.CFG in folder of FOXBIN2PRG.EXE
-* 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 aingle DBF's Syntax: .dbf.cfg in tables folder)
-* 6., Parameter calling FOXBIN2PRG.EXE.
-
-* Some Parameter calling FOXBIN2PRG.EXE overturn this settings (except Defaults)
-*****************************************************************************************************************
-
-*-- Settings for internal work, not processing
-*Language: (auto) && Language of shown messages and LOGs. EN=English, FR=French, ES=Español, DE=German, Not defined = AUTOMATIC [DEFAULT]
-*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.
-*HomeDir: 1 && Home Directory in PJX
-* && 0 don't save HomeDir in PJ2
-* && 1 save HomeDir in PJ2
-*----------------------------------------------------------------------------------------------------------------
-
-*-- Conversion operation by type
-*PJX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge)
-*VCX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge)
-*SCX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge)
-*FRX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge)
-*LBX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge)
-*MNX_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge)
-*DBC_Conversion_Support: 2 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge)
-*DBF_Conversion_Support: 1 && 0=No support, 1=Generate Header TXT only (Diff), 2=Generate Header TXT and BIN (Merge/Only Structure!), 4=Generate TXT with DATA (Diff), 8=Export and Import DATA (Merge/Structure & Data)
-*FKY_Conversion_Support: 1 && 0=No support, 1=Generate TXT only (Diff)
-*MEM_Conversion_Support: 1 && 0=No support, 1=Generate TXT only (Diff)
-*----------------------------------------------------------------------------------------------------------------
-
-*Setting for container files (not pjx)
-*-- CLASS and FORM options (tx2 is to read as vc2 or sc2, VCX might be SCX)
-*- Class per file options (UseClassPerFile: 1)
-*UseClassPerFile: 0 && Determines how a library (or form) will handle included class (or, for forms, objects)
-* && 0 One library.tx2 file
-* && 1 Multiple file.class.tx2 files
-* && 2 Multiple file.baseclass.class.tx2 files
-*RedirectClassPerFileToMain: 0 && When regenerating binary files, determine target file
-* && 0 Don't redirect to file.tx2
-* && 1 Redirect to file.tx2 when selecting file[.baseclass].class.tx2
-* && RedirectClassType: 1 has precedence
-*RedirectClassType: 0 && For classes created with UseClassPerFile>0 in the form file[.baseclass].class.tx2
-* && Those files could be imported like file.tx2::Class::import or like file[.baseclass].class.tx2
-* && For the second form:
-* && 0 Redirect file[.baseclass].class.tx2 to file.VCX and add / replace all other classes of this library
-* && 1 Redirect file[.baseclass].class.tx2 to file[.baseclass].class.VCX and do not touch file.VCX
-* && 2 Redirect file[.baseclass].class.tx2 to file.VCX and do not touch other classes of file.VCX
-*ClassPerFileCheck: 0 && Check, if files listed in the main file of a library or form will be included
-* && 0 Don't check file inclusion
-* && 1 Check file[.baseclass].class.tx2 inclusion
-* && Only used if import file is in file[.baseclass].class.tx2 syntax
-* && Ignored for RedirectClassType: 2
-*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-*-- DBC options
-*- File per DBC options (UseFilesPerDBC: 1)
-*OldFilesPerDBC: 0 && 1=Turns the File per DBC options on, 0 uses the old UseClassPerFile etc settings.
-* && Options below will only read if OldFilesPerDBC is set 1 before!
-* && If OldFilesPerDBC is set 0 later, alle setting will be lost
-*UseFilesPerDBC: 0 && 0=One database dc2 file, 1=Multiple file.*.*.dc2 files
-* && 0 creates only a file.dc2 with all DBC (file) data
-* && 1 creates a file.dc2 with DBC properties
-* && and additional DBC files per DBC item (stored-proc, table, ..)
-* && Note: recration only if RedirectFilePerDBCToMain is 1
-*RedirectFilePerDBCToMain: 0 && 0=Don't redirect to file.dc2, 1=Redirect to file.tx2 when selecting file.item.*.dc2
-*ItemPerDBCCheck: 0 && 0=Don't check file.item.*.dc2 inclusion, 1=Check file.item.*.dc2 inclusion
-*----------------------------------------------------------------------------------------------------------------
-
-*-- General files
-*NoTimestamps: 1 && Clear timestamps of several file types by default for minimize text-file differences
-*ClearUniqueID: 1 && 0=Keep UniqueID in text files, 1=Clear Unique ID. Useful for Diff and Merge
-*OptimizeByFilestamp: 0 && 1=Optimize file regeneration depending on file timestamp. Dangerous while working with branches!
-*RemoveNullCharsFromCode: 1 && 1=Drop NULL chars from source code
-*RemoveZOrderSetFromProps: 0 && 0=Do not remove ZOrderSet property from object, 1=Remove ZOrderSet property from object
-*PRG_Compat_Level: 0 && 0=Legacy, 1=Use HELPSTRING as Class Procedure comment
-*----------------------------------------------------------------------------------------------------------------
-
-*-- PJX special
-*BodyDevInfo: 0 && 0=Don't keep DevInfo for body pjx records, 1=Keep DevInfo
-*----------------------------------------------------------------------------------------------------------------
-
-*-- DBF special
-*ClearDBFLastUpdate: 1 && 0=Keep DBF LastUpdate, 1=Clear DBF LastUpdate. Useful for Diff.
-*ExcludeDBFAutoincNextval: 0 && 0=Do not exclude this value from db2, 1=Exclude this value from db2
-*DBF_Conversion_Included: * && If DBF_Conversion_Support:4, you can specify multiple filemasks: www,fb2p_free.dbf
-*DBF_Conversion_Excluded: && If DBF_Conversion_Support:4, you can specify multiple filemasks: www,fb2p_free.dbf
-*DBF_BinChar_Base64: 1 && For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform (default)
-*DBF_IncludeDeleted: 0 && 0=Do not include deleted records (default), 1=Include deleted records
-*----------------------------------------------------------------------------------------------------------------
-
-*-- Text file extensions
-*extension: tx2=newext && Specify extensions to use. Default FoxBin2Prg extensions ends in '2' (see at the bottom)
-*-- Example configuration for SourceSafe compatibility:
-*extension: pj2=pja && Text file to PJX
-*extension: vc2=vca && Text file to VCX
-*extension: sc2=sca && Text file to SCX
-*extension: fr2=fra && Text file to FRX
-*extension: lb2=lba && Text file to LBX
-*extension: mn2=mna && Text file to MNX
-*extension: db2=dba && Text file to DBF
-*extension: dc2=dca && Text file to DBC
-*-- Additional extensions
-*extension: fk2=fkx && Text file to FKY
-*extension: me2=fkx && Text file to MEM
-*
-*Settings changed
-*----------------
-UseClassPerFile: 2 && 0=One library tx2 file, 1=Multiple file.class.tx2 files, 2=Multiple file.baseclass.class.tx2 files
-RedirectClassPerFileToMain: 1 && 0=Don't redirect to file.tx2, 1=Redirect to file.tx2 when selecting file.class.tx2
-DBF_Conversion_Support: 0 && 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)
-DBC_Conversion_Support: 0 && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge)
-````
-All use off this are the last four lines. But I like to keep the template (recent as version 1.19.69).
-- Using single classes - because it's much more easy to merge a single class then a whole library.
-- A single class selected might be added to the VCX
-- Turn off DBC and DBF conversion
-
-----
-
-This project is part of [VFPX](https://vfpx.github.io/).
-
-----
-Last changed: _2022/11/09_ 
\ No newline at end of file
diff --git a/docs/New_6.md b/docs/New_6.md
index ab14dea..415d521 100644
--- a/docs/New_6.md
+++ b/docs/New_6.md
@@ -143,11 +143,15 @@ Note that *Clear* and *Clear All* only clear the data of the active mode, "Searc
The columns of the grid are reordered.
The previous way to create the grid was very uncomfortable when changing the table structure,
this is changed from visual to code based.
-Due to this, the column information stored will not survive version change.
-#### Visibility
+Due to this, the column information stored will not survive version change.
+#### Visibility
+
The page *Column Selection* on options form is reordered and suppresses fields with internal function.
-They could bw turned on by a change in source code, there is a define `dlDebug` in `GF_ResultsForm.FormatGrid`.
-A way to set the grid to default is added. Fields belonging to the replace function are highlighted in *Replaced* back colour.
+They could be turned on by a change in source code, there is a define `dlDebug` in `GF_ResultsForm.FormatGrid`.
+A way to set the grid to default is added. Fields belonging to the replace function are highlighted in *Replaced* back colour.
+If you think you need a certain field, please post an [issue](https://github.com/VFPX/GoFish/issues).
+The full list of fields, cyan is turned off by default, reds are just internal data, normaly turned off:
+
----
-Last changed: _2023/03/10_ 
\ No newline at end of file
+Last changed: _2023/03/12_ 
\ No newline at end of file
diff --git a/readme.md b/readme.md
index 663561d..633592a 100644
--- a/readme.md
+++ b/readme.md
@@ -1,6 +1,6 @@
#  GoFish!

-**Version 6.0.003, 2023-03-10**
+**Version 6.0.006, 2023-03-12**
GoFish is an advanced code search tool for fast searching and replacing of Visual FoxPro source code.
> Note: Matt's original repository is at https://github.com/mattslay/GoFish but since he sadly passed away in 2021, this fork is now the one the VFPX project list links to so others can contribute to the project. The main project is now https://github.com/VFPX/GoFish
@@ -52,4 +52,4 @@ The search brings one hit per line, even if there is more then one hit in this l
The replace function just replaces all hits per line. There is not hint about multiple hits at all.
----
-Last changed: _2023/03/10_ 
\ No newline at end of file
+Last changed: _2023/03/11_ 
\ No newline at end of file