diff --git a/TESTS/DATOS_READONLY/fb2p_test.vc2 b/TESTS/DATOS_READONLY/fb2p_test.vc2
index 144a3fc..92929ca 100644
--- a/TESTS/DATOS_READONLY/fb2p_test.vc2
+++ b/TESTS/DATOS_READONLY/fb2p_test.vc2
@@ -36,6 +36,22 @@ DEFINE CLASS cl_commandgroup AS commandgroup && Descripci
ENDDEFINE
+DEFINE CLASS cl_cust_rsv_kwd AS custom
+ *< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
+
+ *
+ *p: nota
+ *p: note && Reserved keyword
+ *
+
+ Height = 53
+ Name = "cl_cust_rsv_kwd"
+ nota =
+ note = && Reserved keyword
+ Width = 135
+
+ENDDEFINE
+
DEFINE CLASS cl_form AS form OLEPUBLIC && mi OLE server DLL
*< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" ProjectClassIcon="bmps\container.ico" ClassIcon="bmps\container.ico" />
diff --git a/TESTS/DATOS_READONLY/fb2p_test.vct b/TESTS/DATOS_READONLY/fb2p_test.vct
index 30bcaa6..803345a 100644
Binary files a/TESTS/DATOS_READONLY/fb2p_test.vct and b/TESTS/DATOS_READONLY/fb2p_test.vct differ
diff --git a/TESTS/DATOS_READONLY/fb2p_test.vcx b/TESTS/DATOS_READONLY/fb2p_test.vcx
index aa7fd97..be1d6d5 100644
Binary files a/TESTS/DATOS_READONLY/fb2p_test.vcx and b/TESTS/DATOS_READONLY/fb2p_test.vcx differ
diff --git a/TESTS/DATOS_READONLY/github_issues.vc2 b/TESTS/DATOS_READONLY/github_issues.vc2
new file mode 100644
index 0000000..9235629
--- /dev/null
+++ b/TESTS/DATOS_READONLY/github_issues.vc2
@@ -0,0 +1,25 @@
+*--------------------------------------------------------------------------------------------------------------------------------------------------------
+* (ES) AUTOGENERADO - ¡¡ATENCIÓN!! - ¡¡NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!!
+* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
+*--------------------------------------------------------------------------------------------------------------------------------------------------------
+*< FOXBIN2PRG: Version="1.19" SourceFile="github_issues.vcx" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
+*
+*
+DEFINE CLASS issue_26 AS custom
+ *< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
+
+ Name = "issue_26"
+
+ PROCEDURE Init
+ * REPORTED BY KIRIDES - 09/07/2018
+ * https://github.com/fdbozzo/foxbin2prg/issues/26
+ *-------------------------------------------------
+ create cursor (lcTabelle) (;
+ SOME_ID N(4),;
+ TEXT C(50),; && This is Any Comment
+ SOME_OTHER N(10,2);
+ )
+
+ ENDPROC
+
+ENDDEFINE
diff --git a/TESTS/DATOS_READONLY/github_issues.vct b/TESTS/DATOS_READONLY/github_issues.vct
new file mode 100644
index 0000000..7af83df
Binary files /dev/null and b/TESTS/DATOS_READONLY/github_issues.vct differ
diff --git a/TESTS/ft__foxbin2prg__c_conversor_bin_a_prg.prg b/TESTS/ft__foxbin2prg__c_conversor_bin_a_prg.prg
index 3fa18e4..f485a26 100644
--- a/TESTS/ft__foxbin2prg__c_conversor_bin_a_prg.prg
+++ b/TESTS/ft__foxbin2prg__c_conversor_bin_a_prg.prg
@@ -119,7 +119,12 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_bin_a_prg AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
THIS.Evaluate_results( loEx, lnCodError_Esperado )
diff --git a/TESTS/ft__foxbin2prg__c_conversor_prg_a_bin.prg b/TESTS/ft__foxbin2prg__c_conversor_prg_a_bin.prg
index c157157..51f7c9c 100644
--- a/TESTS/ft__foxbin2prg__c_conversor_prg_a_bin.prg
+++ b/TESTS/ft__foxbin2prg__c_conversor_prg_a_bin.prg
@@ -109,7 +109,12 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_bin AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
THIS.Evaluate_results( loEx, lnCodError_Esperado )
diff --git a/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbc.prg b/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbc.prg
index 77de9a2..72dc8f8 100644
--- a/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbc.prg
+++ b/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbc.prg
@@ -112,14 +112,30 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbc AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( 'EVENTSFILE.PRG' )
*-- Genero el DC2
- loCnv.execute( FORCEEXT(lc_OutputFile,'DBC'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'DBC'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Regenero el DBC
- loCnv.execute( FORCEEXT(lc_OutputFile,'DC2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'DC2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Renombro el DC2 a DC3 (ORIGINAL)
RENAME (FORCEEXT(lc_OutputFile,'DC2')) TO (FORCEEXT(lc_OutputFile,'DC3'))
*-- Genero el DC2 desde el DBC regenerado
*WAIT WINDOW TIMEOUT 2 && Para forzar una diferencia de 2 segundos entre el DC2 y el DC3
- loCnv.execute( FORCEEXT(lc_OutputFile,'DBC'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'DBC'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Comparo los DC2 y DC3
lcDC2 = STREXTRACT( FILETOSTR( FORCEEXT(lc_OutputFile,'DC2') ), '', '' )
lcDC3 = STREXTRACT( FILETOSTR( FORCEEXT(lc_OutputFile,'DC3') ), '', '' )
diff --git a/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg b/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg
index de0ab4b..5472532 100644
--- a/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg
+++ b/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg
@@ -113,7 +113,11 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( lc_File )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
@@ -190,7 +194,11 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( lc_File )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
@@ -263,8 +271,17 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') )
- loCnv.execute( FORCEEXT(lc_OutputFile,'DBF'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
- loCnv.execute( FORCEEXT(lc_OutputFile,'DB2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'DBF'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'DB2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
@@ -343,8 +360,17 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') )
- loCnv.execute( FORCEEXT(lc_OutputFile,'DBF'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
- loCnv.execute( FORCEEXT(lc_OutputFile,'DB2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'DBF'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'DB2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (FORCEEXT(lc_InputFile,'DBF')) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
diff --git a/TESTS/ft__foxbin2prg__c_conversor_prg_a_mnx.prg b/TESTS/ft__foxbin2prg__c_conversor_prg_a_mnx.prg
index 27a1746..dbabf41 100644
--- a/TESTS/ft__foxbin2prg__c_conversor_prg_a_mnx.prg
+++ b/TESTS/ft__foxbin2prg__c_conversor_prg_a_mnx.prg
@@ -1,7 +1,7 @@
DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_mnx AS FxuTestCase OF FxuTestCase.prg
#IF .F.
- LOCAL THIS AS ft__foxbin2prg__c_conversor_prg_a_mnx OF ft__foxbin2prg__c_conversor_prg_a_mnx.PRG
+ LOCAL THIS AS ft__foxbin2prg__c_conversor_prg_a_mnx OF ft__foxbin2prg__c_conversor_prg_a_mnx.prg
#ENDIF
#DEFINE C_FB2P_VALUE_I ''
@@ -111,24 +111,39 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_mnx AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') )
*-- Genero el DC2
- loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Regenero el DBC
- loCnv.execute( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Renombro el DC2 a DC3 (ORIGINAL)
RENAME (FORCEEXT(lc_OutputFile,'MN2')) TO (FORCEEXT(lc_OutputFile,'MN3'))
*-- Genero el DC2 desde el DBC regenerado
- loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Comparo los MN2 y MN3
lnLenHeader = LEN( loCnv.get_PROGRAM_HEADER() )
lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN2') ), lnLenHeader )
lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN3') ), lnLenHeader )
-
-
+
+
*-- Visualización de valores
THIS.messageout( 'Bytes MN3: ' + TRANSFORM(LEN(lcMN3)) )
THIS.messageout( 'Bytes MN2: ' + TRANSFORM(LEN(lcMN2)) )
-
+
*-- Evaluación de valores
this.assertequals( lcMN2, lcMN3, '[Comparación MN2 y MN3]' )
@@ -171,24 +186,40 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_mnx AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') )
*-- Genero el DC2
- loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Regenero el DBC
- loCnv.execute( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Renombro el DC2 a DC3 (ORIGINAL)
RENAME (FORCEEXT(lc_OutputFile,'MN2')) TO (FORCEEXT(lc_OutputFile,'MN3'))
+
*-- Genero el DC2 desde el DBC regenerado
- loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Comparo los MN2 y MN3
lnLenHeader = LEN( loCnv.get_PROGRAM_HEADER() )
lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN2') ), lnLenHeader )
lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN3') ), lnLenHeader )
-
-
+
+
*-- Visualización de valores
THIS.messageout( 'Bytes MN3: ' + TRANSFORM(LEN(lcMN3)) )
THIS.messageout( 'Bytes MN2: ' + TRANSFORM(LEN(lcMN2)) )
-
+
*-- Evaluación de valores
this.assertequals( lcMN2, lcMN3, '[Comparación MN2 y MN3]' )
@@ -231,24 +262,40 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_mnx AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') )
*-- Genero el DC2
- loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Regenero el DBC
- loCnv.execute( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Renombro el DC2 a DC3 (ORIGINAL)
RENAME (FORCEEXT(lc_OutputFile,'MN2')) TO (FORCEEXT(lc_OutputFile,'MN3'))
+
*-- Genero el DC2 desde el DBC regenerado
- loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Comparo los MN2 y MN3
lnLenHeader = LEN( loCnv.get_PROGRAM_HEADER() )
lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN2') ), lnLenHeader )
lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN3') ), lnLenHeader )
-
-
+
+
*-- Visualización de valores
THIS.messageout( 'Bytes MN3: ' + TRANSFORM(LEN(lcMN3)) )
THIS.messageout( 'Bytes MN2: ' + TRANSFORM(LEN(lcMN2)) )
-
+
*-- Evaluación de valores
this.assertequals( lcMN2, lcMN3, '[Comparación MN2 y MN3]' )
@@ -291,24 +338,40 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_mnx AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') )
*-- Genero el DC2
- loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Regenero el DBC
- loCnv.execute( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Renombro el DC2 a DC3 (ORIGINAL)
RENAME (FORCEEXT(lc_OutputFile,'MN2')) TO (FORCEEXT(lc_OutputFile,'MN3'))
+
*-- Genero el DC2 desde el DBC regenerado
- loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Comparo los MN2 y MN3
lnLenHeader = LEN( loCnv.get_PROGRAM_HEADER() )
lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN2') ), lnLenHeader )
lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN3') ), lnLenHeader )
-
-
+
+
*-- Visualización de valores
THIS.messageout( 'Bytes MN3: ' + TRANSFORM(LEN(lcMN3)) )
THIS.messageout( 'Bytes MN2: ' + TRANSFORM(LEN(lcMN2)) )
-
+
*-- Evaluación de valores
this.assertequals( lcMN2, lcMN3, '[Comparación MN2 y MN3]' )
@@ -351,24 +414,40 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_mnx AS FxuTestCase OF FxuTestCase
oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') )
*-- Genero el DC2
- loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Regenero el DBC
- loCnv.execute( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MN2'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Renombro el DC2 a DC3 (ORIGINAL)
RENAME (FORCEEXT(lc_OutputFile,'MN2')) TO (FORCEEXT(lc_OutputFile,'MN3'))
+
*-- Genero el DC2 desde el DBC regenerado
- loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile,'MNX'), '', '', '', '1', '0', '1',.F.,.F.,.T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*-- Comparo los MN2 y MN3
lnLenHeader = LEN( loCnv.get_PROGRAM_HEADER() )
lcMN2 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN2') ), lnLenHeader )
lcMN3 = SUBSTR( FILETOSTR( FORCEEXT(lc_OutputFile,'MN3') ), lnLenHeader )
-
-
+
+
*-- Visualización de valores
THIS.messageout( 'Bytes MN3: ' + TRANSFORM(LEN(lcMN3)) )
THIS.messageout( 'Bytes MN2: ' + TRANSFORM(LEN(lcMN2)) )
-
+
*-- Evaluación de valores
this.assertequals( lcMN2, lcMN3, '[Comparación MN2 y MN3]' )
diff --git a/TESTS/ut__foxbin2prg.prg b/TESTS/ut__foxbin2prg.prg
index 11266b9..0d24f01 100644
--- a/TESTS/ut__foxbin2prg.prg
+++ b/TESTS/ut__foxbin2prg.prg
@@ -314,8 +314,17 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
- loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
@@ -395,8 +404,17 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, 'LBX' ) )
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, 'LBT' ) )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
- loCnv.execute( lc_OutputFile2, '', '', '', '1', '0', '1', '', '', .T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
+ lnCodError = loCnv.execute( lc_OutputFile2, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
@@ -472,8 +490,17 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
- loCnv.execute( lc_OutputFile2, '', '', '', '1', '0', '1', '', '', .T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
+ lnCodError = loCnv.execute( lc_OutputFile2, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
@@ -555,8 +582,17 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
- loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (lc_OutputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN
@@ -640,8 +676,17 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
- loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (lc_OutputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN
@@ -735,8 +780,17 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
- loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
@@ -819,8 +873,17 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
- loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
@@ -904,7 +967,12 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
*loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
*-- Comparo resultados
@@ -962,8 +1030,17 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
- loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
- loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+ lnCodError = loCnv.execute( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), '', '', '', '1', '0', '1', '', '', .T. )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN
@@ -1104,16 +1181,32 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
CLEAR CLASSLIB (lcLib)
*-- Genero TX2
- loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR(), '1', '0' )
+ lnCodError = loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR(), '1', '0' )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
*-- Genero BIN
- loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_OutputFile),2 ) + '2' ), .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR(), '1', '0' )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_OutputFile),2 ) + '2' ), .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR(), '1', '0' )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
*-- Genero TX2
- loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR(), '1', '0' )
+ lnCodError = loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR(), '1', '0' )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
*-- Genero BIN
- loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_OutputFile),2 ) + '2' ), .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR(), '1', '0' )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_OutputFile),2 ) + '2' ), .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR(), '1', '0' )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
*-- Genero BMP con libreria regenerada
SET CLASSLIB TO (lcLib) ADDITIVE
@@ -1374,7 +1467,12 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
COPY FILE (lc_OutputFileTx2) TO (lc_OutputFileBak)
*-- Genero TX2
- loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+ lnCodError = loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
lnNulls = OCCURS( CHR(0), FILETOSTR( lc_OutputFileTx2 ) )
*-- Comparo resultados
@@ -1431,7 +1529,12 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
COPY FILE (lc_OutputFileTx2) TO (lc_OutputFileBak)
*-- Genero TX2
- loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+ lnCodError = loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
+
lnNulls = OCCURS( CHR(0), FILETOSTR( lc_OutputFileTx2 ) )
*-- Comparo resultados
@@ -1493,13 +1596,25 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
COPY FILE (lc_OutputFileTx2) TO (lc_OutputFileBak)
*-- Genero TX2
- loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+ lnCodError = loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
*-- Genero BIN
- loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_OutputFile),2 ) + '2' ), .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+ lnCodError = loCnv.execute( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_OutputFile),2 ) + '2' ), .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
*-- Genero TX2
- loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+ lnCodError = loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
*-- Comparo resultados
THIS.messageout( "Se compara el archivo de texto generado con el original luego de 2 regeneraciones, para saber si hay cambios" )
@@ -1645,7 +1760,11 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, '*' ) )
*-- Genero TX2
- loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+ lnCodError = loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
*-- Comparo resultados
THIS.messageout( "Respuesta esperada = .T." )
@@ -1702,7 +1821,11 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, '*' ) )
*-- Genero TX2
- loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+ lnCodError = loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
*-- Comparo resultados
THIS.messageout( "Respuesta esperada = .T." )
@@ -1781,10 +1904,18 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
*loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
*-- Genero BIN
- loCnv.execute( lc_OutputFileTx2, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+ lnCodError = loCnv.execute( lc_OutputFileTx2, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
*-- Genero TX2
- loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+ lnCodError = loCnv.execute( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() )
+
+ IF lnCodError > 0
+ ERROR (loCnv.c_TextErr)
+ ENDIF
*-- Comparo resultados
THIS.messageout( "Se compara el archivo de texto generado con el original luego de 2 regeneraciones, para saber si hay cambios" )
diff --git a/foxbin2prg.exe b/foxbin2prg.exe
index 148c207..5c0d3df 100644
Binary files a/foxbin2prg.exe and b/foxbin2prg.exe differ
diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2
index 2b1d74c..14dbf72 100644
--- a/foxbin2prg.pj2
+++ b/foxbin2prg.pj2
@@ -33,7 +33,7 @@ _AutoIncrement = "0"
*
-*<.HomeDir = 'h:\desa\foxbin2prg' />
+*<.HomeDir = 'c:\desa\foxbin2prg' />
FOR EACH loProject IN _VFP.Projects FOXOBJECT
loProject.Close()
@@ -50,49 +50,49 @@ MODIFY PROJECT 'foxbin2prg.pjx' NOWAIT NOSHOW NOPROJECTHOOK
loProject = _VFP.Projects('foxbin2prg.pjx')
WITH loProject.FILES
- .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('foxbin2prg.ico') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('foxbin2prg.jpg') && *< FileMetadata: Type="x" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" />
- .ADD('props_all.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_checkbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_collection.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_combobox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_commandbutton.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_commandgroup.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_container.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_control.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_cursor.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_cursoradapter.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_dataenvironment.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_editbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_form.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_formset.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_grid.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_grid_column.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_grid_header.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_hyperlink.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_image.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_label.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_line.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_listbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_olebound.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_optiongroup.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_optiongroup_option.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_pageframe.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_pageframe_page.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_projecthook.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_relation.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_reportlistener.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_separator.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_shape.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_spinner.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_textbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_timer.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_toolbar.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_xmladapter.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_xmlfield.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
- .ADD('props_xmltable.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
+ .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('foxbin2prg.ico') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('foxbin2prg.jpg') && *< FileMetadata: Type="x" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" />
+ .ADD('props_all.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_checkbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_collection.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_combobox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_commandbutton.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_commandgroup.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_container.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_control.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_cursor.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_cursoradapter.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_dataenvironment.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_editbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_form.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_formset.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_grid.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_grid_column.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_grid_header.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_hyperlink.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_image.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_label.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_line.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_listbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_olebound.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_optiongroup.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_optiongroup_option.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_pageframe.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_pageframe_page.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_projecthook.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_relation.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_reportlistener.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_separator.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_shape.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_spinner.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_textbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_timer.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_toolbar.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_xmladapter.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_xmlfield.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
+ .ADD('props_xmltable.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
*
.ITEM('__newproject.f2b').Remove()
@@ -119,6 +119,7 @@ WITH loProject
*<.CmntStyle = 1 />
*<.NoLogo = .F. />
*<.SaveCode = .T. />
+ *<.User = '' />
.ProjectHookLibrary = ''
.ProjectHookClass = ''
*
diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt
index f62b4e4..5d62ac7 100644
Binary files a/foxbin2prg.pjt and b/foxbin2prg.pjt differ
diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx
index 7daa312..83f3318 100644
Binary files a/foxbin2prg.pjx and b/foxbin2prg.pjx differ
diff --git a/foxbin2prg.prg b/foxbin2prg.prg
index 7cd9ca7..3c6eb7c 100644
--- a/foxbin2prg.prg
+++ b/foxbin2prg.prg
@@ -220,6 +220,11 @@
* 09/07/2018 FDBOZZO v1.19.51.3 Bug Fix: Error 1098, Cannot find ... [ENDT] that closes ... [TEXT] Issue#26 when there is a field named TEXT as first line-word (KIRIDES)
* 10/07/2018 FDBOZZO v1.19.51.4 Bug Fix: El ordenamiento alfabético de los objetos de los ADD OBJECT puede causar que algunos objetos se creen en el orden erróneo, provocando comportamientos inesperados (Jochen Kauz)
* 14/02/2019 TRACY_P v1.19.51.5 Enhancement: Make FoxBin2Prg more COM friendly when using ESC key (Tracy Pearson)
+* 01/04/2020 RHARRIS v1.19.51.6 Bug Fix: Si alguno de los archivos-por-clase no tiene CR_LF al final, al ensamblar la clase se pueden superponer instrucciones de forma inválida (Ryan Harris)
+* 01/04/2020 FDBOZZO v1.19.51.6 Bug Fix: Incompatible with VFPA (#36) (Eric Selje)
+* 01/04/2020 DH v1.19.51 Bug Fix: Manejo de AutoIncrement incompatible con Project Explorer (Dan Lauer)
+* 01/04/2020 FDBOZZO v1.19.51 Bug Fix: La conversión de tablas falla si algún campo contiene una palabra reservada como UNIQUE (DAJU78)
+* 01/04/2020 FDBOZZO v1.19.51 Bug Fix: No se respetan las propiedades de VCX/SCX con nombre "note" (Tracy Pearson)
*
*
*---------------------------------------------------------------------------------------------------
@@ -347,6 +352,11 @@
* 20/06/2018 Jairo A/Juan CP Reporte Bug v1.19.51: Cuando se exporta un DBF que pertenece a un DBC sin eventos, falla (Arreglado en v1.19.51.2)
* 09/07/2018 KIRIDES Reporte Bug v1.19.51: Error 1098, Cannot find ... [ENDT] that closes ... [TEXT] Issue#26 when there is a field named TEXT as first line-word (Se arregla en v1.19.51.3)
* 10/07/2018 Jochen Kauz Reporte Bug v1.19.51: El ordenamiento alfabético de los objetos de los ADD OBJECT puede causar que algunos objetos se creen en el orden erróneo, provocando comportamientos inesperados (Se arregla en v1.19.51.3)
+* 14/03/2019 Tracy Pearson Reporte Bug v1.19.51: No se respetan las propiedades de VCX/SCX con nombre "note" (Se arregla en v1.19.51.6)
+* 18/04/2019 DAJU78 Reporte Bug v1.19.51: La conversión de tablas falla si algún campo contiene una palabra reservada como UNIQUE (Se arregla en v1.19.51.6)
+* 19/07/2019 Dan Lauer Reporte Bug v1.19.51: Manejo de AutoIncrement incompatible con Project Explorer (Arreglado en v1.19.49.6, con solución de Doug Hennnig)
+* 13/11/2019 Eric Selje Reporte Bug v1.19.51: Incompatible with VFPA (#36) (Se arregla en v1.19.51.6)
+* 31/03/2020 Ryan Harris Reporte Bug v1.19.51: Si alguno de los archivos-por-clase no tiene CR_LF al final, al ensamblar la clase se pueden superponer instrucciones de forma inválida (Se arregla en v1.19.51.6)
*
*
*---------------------------------------------------------------------------------------------------
@@ -2862,7 +2872,7 @@ DEFINE CLASS c_foxbin2prg AS Session
*--------------------------------------------------------------------------------------------------------------
LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress ;
, toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile, tcNoTimestamps ;
- , tcBackupLevels, tcClearUniqueID, tcOptimizeByFilestamp, tcCFG_File
+ , tcBackupLevels, tcClearUniqueID, tcOptimizeByFilestamp, tcCFG_File, lnVFPVersion
TRY
LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laDirInfo(1,5), lcInputFile_Type, lc_OldSetNotify ;
@@ -2890,6 +2900,7 @@ DEFINE CLASS c_foxbin2prg AS Session
.l_Error = .F.
tcType = UPPER( EVL(tcType,'') )
llEscKeyRestored = .T.
+ lnVFPVersion = VERSION(5)
.declareDLL()
IF THIS.l_CancelWithEscKey THEN
@@ -2901,7 +2912,10 @@ DEFINE CLASS c_foxbin2prg AS Session
ENDIF
DO CASE
- CASE VERSION(5) < 900 OR INT( VAL( SUBSTR( VERSION(4), RAT('.', VERSION(4)) + 1 ) ) ) < 3504
+ CASE lnVFPVersion = 900 AND INT( VAL( SUBSTR( VERSION(4), RAT('.', VERSION(4)) + 1 ) ) ) < 3504
+ ERROR loLang.C_INCORRECT_VFP9_VERSION__MISSING_SP1_LOC
+
+ CASE lnVFPVersion < 900
ERROR loLang.C_INCORRECT_VFP9_VERSION__MISSING_SP1_LOC
CASE '\' $ tcType
@@ -2911,6 +2925,8 @@ DEFINE CLASS c_foxbin2prg AS Session
+ loLang.C_ALLOWED_VALUES_ARE_LOC + ': ' + CR_LF ;
+ '*, *-, -BIN2PRG, -PRG2BIN, -SHOWMSG, -SIMERR_I0, -SIMERR_I1, -SIMERR_O1'
+ OTHERWISE
+ * OK all versions from 900(3504) and up. For VFPA Guys :)
ENDCASE
DO CASE
@@ -7205,7 +7221,10 @@ DEFINE CLASS c_conversor_base AS Custom
CASE LEFT(tcLine,2) == '*<'
tcComment = tcLine
- CASE EMPTY(tcLine) OR LEFT(tcLine, 1) == '*' OR UPPER(LEFT(tcLine + ' ', 5)) == 'NOTE ' && Vacía o Comentarios
+ CASE EMPTY(tcLine) OR LEFT(tcLine, 1) == '*' ;
+ OR UPPER(LEFT(tcLine + ' ', 5)) == 'NOTE ' ; && Vacía o Comentarios
+ AND NOT UPPER(LEFT(tcLine + ' ', 6)) == 'NOTE =' && Excluir asignaciones
+ *
lllineIsOnlyCommentAndNoMetadata = .T.
ENDCASE
@@ -10424,7 +10443,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin
IF toFoxBin2Prg.l_ProcessFiles THEN
toFoxBin2Prg.normalizeFileCapitalization( .T., lcInputFile_Class )
- C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class )
+ C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + FILETOSTR( lcInputFile_Class )
ENDIF
ENDFOR
@@ -10925,7 +10944,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
ENDIF
toFoxBin2Prg.normalizeFileCapitalization( .T., lcInputFile_Class )
- C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class )
+ C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + FILETOSTR( lcInputFile_Class )
ENDFOR
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
@@ -12768,7 +12787,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
ENDIF
*-- Nombre, Tipo
- lcFieldDef = lcFieldDef + loField._Name + ' ' + loField._Type
+ lcFieldDef = lcFieldDef + '"' + loField._Name + '" ' + loField._Type
*-- Longitud
IF INLIST( loField._Type, 'C', 'N', 'F', 'Q', 'V' )
@@ -19156,7 +19175,8 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE
._MinorVer = .parseNullTerminatedValue( @tcDevInfo, 1758, 4 )
._Revision = .parseNullTerminatedValue( @tcDevInfo, 1763, 4 )
._LanguageID = .parseNullTerminatedValue( @tcDevInfo, 1768, 19 )
- ._AutoIncrement = IIF( SUBSTR( tcDevInfo, 1788, 1 ) = CHR(1), '1', '0' )
+ *._AutoIncrement = IIF( SUBSTR( tcDevInfo, 1788, 1 ) = CHR(1), '1', '0' )
+ ._AutoIncrement = TRANSFORM(ASC(SUBSTR(tcDevInfo, 1788, 1))) && Proposed by Doug Hennig
ENDWITH && THIS
CATCH TO loEx