diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.sct b/TESTS/DATOS_READONLY/fb2p_frm_1.sct
index 5324983..4e33748 100644
Binary files a/TESTS/DATOS_READONLY/fb2p_frm_1.sct and b/TESTS/DATOS_READONLY/fb2p_frm_1.sct differ
diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.scx b/TESTS/DATOS_READONLY/fb2p_frm_1.scx
index 0391e14..9872f01 100644
Binary files a/TESTS/DATOS_READONLY/fb2p_frm_1.scx and b/TESTS/DATOS_READONLY/fb2p_frm_1.scx differ
diff --git a/TESTS/DATOS_READONLY/fb2p_frm_2.sct b/TESTS/DATOS_READONLY/fb2p_frm_2.sct
index 803343d..6a6564f 100644
Binary files a/TESTS/DATOS_READONLY/fb2p_frm_2.sct and b/TESTS/DATOS_READONLY/fb2p_frm_2.sct differ
diff --git a/TESTS/DATOS_READONLY/fb2p_frm_2.scx b/TESTS/DATOS_READONLY/fb2p_frm_2.scx
index d52cd12..b96bca4 100644
Binary files a/TESTS/DATOS_READONLY/fb2p_frm_2.scx and b/TESTS/DATOS_READONLY/fb2p_frm_2.scx differ
diff --git a/TESTS/ut__foxbin2prg.prg b/TESTS/ut__foxbin2prg.prg
index ac937ce..caffe54 100644
--- a/TESTS/ut__foxbin2prg.prg
+++ b/TESTS/ut__foxbin2prg.prg
@@ -287,7 +287,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
- lc_File = 'fb2p_foxuser.frx'
+ lc_File = 'FB2P_FOXUSER.FRX'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
@@ -361,7 +361,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
- lc_File = 'fb2p_foxuser.lbx'
+ lc_File = 'FB2P_FOXUSER.LBX'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
@@ -433,7 +433,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
- lc_File = 'fb2p_frm_1.scx'
+ lc_File = 'FB2P_FRM_1.SCX'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
@@ -515,7 +515,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
- lc_File = 'fb2p_test.vcx'
+ lc_File = 'FB2P_TEST.VCX'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
@@ -597,7 +597,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
- lc_File = 'fb2p_test_bug_metodo_movido.vcx'
+ lc_File = 'FB2P_TEST_BUG_METODO_MOVIDO.VCX'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
@@ -679,7 +679,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
- lc_File = 'fb2p_test_bug_estructural.vcx'
+ lc_File = 'FB2P_TEST_BUG_ESTRUCTURAL.VCX'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) )
diff --git a/foxbin2prg.prg b/foxbin2prg.prg
index bf43637..22872d2 100644
--- a/foxbin2prg.prg
+++ b/foxbin2prg.prg
@@ -629,6 +629,7 @@ DEFINE CLASS c_conversor_base AS SESSION
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -945,27 +946,70 @@ DEFINE CLASS c_conversor_base AS SESSION
*******************************************************************************************************************
PROCEDURE doBackup
- LOCAL lcNext_Bak, lcExt_X, lcExt_T
- lcNext_Bak = THIS.getNext_BAK( THIS.c_OutputFile )
- lcExt_X = JUSTEXT( THIS.c_OutputFile )
- lcExt_T = LEFT(lcExt_X,2) + 'T'
+ LPARAMETERS toEx, tlRelanzarError, tcBakFile_1, tcBakFile_2, tcBakFile_3
- DO CASE
- CASE JUSTEXT( THIS.c_OutputFile ) = lcExt_X
- IF FILE( FORCEEXT(THIS.c_OutputFile,lcExt_X) )
- THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,lcExt_X) + '/' + lcExt_T )
+ TRY
+ LOCAL lcNext_Bak, lcExt_1, lcExt_2, lcExt_3
+ STORE '' TO tcBakFile_1, tcBakFile_2, tcBakFile_3
+ lcNext_Bak = THIS.getNext_BAK( THIS.c_OutputFile )
+ lcExt_1 = JUSTEXT( THIS.c_OutputFile )
+ tcBakFile_1 = FORCEEXT(THIS.c_OutputFile, lcExt_1 + lcNext_Bak)
- COPY FILE (FORCEEXT(THIS.c_OutputFile,lcExt_X)) TO (FORCEEXT(THIS.c_OutputFile, lcExt_X + lcNext_Bak))
+ DO CASE
+ CASE lcExt_1 = 'DBF'
+ *-- DBF
+ lcExt_2 = 'FPT'
+ lcExt_3 = 'CDX'
+ tcBakFile_2 = FORCEEXT(THIS.c_OutputFile, lcExt_2 + lcNext_Bak)
+ tcBakFile_3 = FORCEEXT(THIS.c_OutputFile, lcExt_3 + lcNext_Bak)
- IF FILE( FORCEEXT(THIS.c_OutputFile,lcExt_T) )
- COPY FILE (FORCEEXT(THIS.c_OutputFile,lcExt_T)) TO (FORCEEXT(THIS.c_OutputFile,lcExt_T + lcNext_Bak))
+ CASE lcExt_1 = 'DBC'
+ *-- DBC
+ lcExt_2 = 'DCT'
+ lcExt_3 = 'DCX'
+ tcBakFile_2 = FORCEEXT(THIS.c_OutputFile, lcExt_2 + lcNext_Bak)
+ tcBakFile_3 = FORCEEXT(THIS.c_OutputFile, lcExt_3 + lcNext_Bak)
+
+ OTHERWISE
+ *-- PJX, VCX, SCX, FRX, LBX, MNX
+ lcExt_2 = LEFT(lcExt_1,2) + 'T'
+ tcBakFile_2 = FORCEEXT(THIS.c_OutputFile, lcExt_2 + lcNext_Bak)
+
+ ENDCASE
+
+ IF NOT EMPTY(lcExt_1) AND FILE( FORCEEXT(THIS.c_OutputFile, lcExt_1) )
+ IF EMPTY(lcExt_3)
+ THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,lcExt_1) + '/' + lcExt_2 )
+ ELSE
+ THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,lcExt_1) + '/' + lcExt_2 + '/' + lcExt_3 )
+ ENDIF
+
+ *COPY FILE ( FORCEEXT(THIS.c_OutputFile, lcExt_1) ) TO ( FORCEEXT(THIS.c_OutputFile, lcExt_1 + lcNext_Bak) )
+ RENAME ( FORCEEXT(THIS.c_OutputFile, lcExt_1) ) TO ( tcBakFile_1 )
+
+ IF NOT EMPTY(lcExt_2) AND FILE( FORCEEXT(THIS.c_OutputFile, lcExt_2) )
+ *COPY FILE ( FORCEEXT(THIS.c_OutputFile, lcExt_2) ) TO ( FORCEEXT(THIS.c_OutputFile, lcExt_2 + lcNext_Bak) )
+ RENAME ( FORCEEXT(THIS.c_OutputFile, lcExt_2) ) TO ( tcBakFile_2 )
+ ENDIF
+
+ IF NOT EMPTY(lcExt_3) AND FILE( FORCEEXT(THIS.c_OutputFile, lcExt_3) )
+ *COPY FILE ( FORCEEXT(THIS.c_OutputFile, lcExt_3) ) TO ( FORCEEXT(THIS.c_OutputFile, lcExt_3 + lcNext_Bak) )
+ RENAME ( FORCEEXT(THIS.c_OutputFile, lcExt_3) ) TO ( tcBakFile_3 )
ENDIF
ENDIF
-
- OTHERWISE
- ERROR 'Tipo de archivo [' + JUSTFNAME(THIS.c_OutputFile) + '] no soportado para backup!'
- ENDCASE
+ CATCH TO loEx
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ IF tlRelanzarError
+ THROW
+ ENDIF
+
+ ENDTRY
+
+ RETURN
ENDPROC
@@ -1311,6 +1355,274 @@ DEFINE CLASS c_conversor_base AS SESSION
ENDFUNC
+ *******************************************************************************************************************
+ PROCEDURE sortPropsAndValues_SetAndGetSCXPropNames
+ *--------------------------------------------------------------------------------------------------------------
+ * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
+ * tcOperation (!v IN ) Operación a realizar ("SETNAME" o "GETNAME")
+ * tcPropName (!v IN ) Nombre de la propiedad
+ *--------------------------------------------------------------------------------------------------------------
+ LPARAMETERS tcOperation, tcPropName
+ LOCAL lcPropName, lnPropType
+ lcPropName = ''
+ tcOperation = UPPER(EVL(tcOperation,''))
+ lnPropType = 0 && System property
+
+ DO CASE
+ CASE tcOperation == 'GETNAME'
+ lcPropName = SUBSTR(tcPropName,5)
+ CASE NOT tcOperation == 'SETNAME'
+ ERROR 'Operación no reconocida. Solo re reconoce SETNAME y GETNAME.'
+ CASE lcPropName == 'ButtonCount'
+ lcPropName = 'A005' + lcPropName
+ CASE lcPropName == 'ColumnCount'
+ lcPropName = 'A010' + lcPropName
+ CASE lcPropName == 'Value'
+ lcPropName = 'A015' + lcPropName
+ CASE lcPropName == 'Comment'
+ lcPropName = 'A020' + lcPropName
+ CASE lcPropName == 'ControlSource'
+ lcPropName = 'A025' + lcPropName
+ CASE lcPropName == 'DataSession'
+ lcPropName = 'A030' + lcPropName
+ CASE lcPropName == 'DeleteMark'
+ lcPropName = 'A035' + lcPropName
+ CASE lcPropName == 'ScaleMode'
+ lcPropName = 'A040' + lcPropName
+ CASE lcPropName == 'Tag'
+ lcPropName = 'A045' + lcPropName
+ CASE lcPropName == 'Top'
+ lcPropName = 'A050' + lcPropName
+ CASE lcPropName == 'Left'
+ lcPropName = 'A055' + lcPropName
+ CASE lcPropName == 'Height'
+ lcPropName = 'A060' + lcPropName
+ CASE lcPropName == 'Width'
+ lcPropName = 'A065' + lcPropName
+ CASE lcPropName == 'MaxLength'
+ lcPropName = 'A070' + lcPropName
+ CASE lcPropName == 'Alias'
+ lcPropName = 'A075' + lcPropName
+ CASE lcPropName == 'BufferModeOverride'
+ lcPropName = 'A080' + lcPropName
+ CASE lcPropName == 'Order'
+ lcPropName = 'A085' + lcPropName
+ CASE lcPropName == 'OrderDirection'
+ lcPropName = 'A090' + lcPropName
+ CASE lcPropName == 'CursorSource'
+ lcPropName = 'A095' + lcPropName
+ CASE lcPropName == 'Exclusive'
+ lcPropName = 'A100' + lcPropName
+ CASE lcPropName == 'Filter'
+ lcPropName = 'A105' + lcPropName
+ CASE lcPropName == 'Panel'
+ lcPropName = 'A110' + lcPropName
+ CASE lcPropName == 'ReadOnly'
+ lcPropName = 'A115' + lcPropName
+ CASE lcPropName == 'RecordSource'
+ lcPropName = 'A120' + lcPropName
+ CASE lcPropName == 'RecordSourceType'
+ lcPropName = 'A125' + lcPropName
+ CASE lcPropName == 'NoDataOnLoad'
+ lcPropName = 'A130' + lcPropName
+ CASE lcPropName == 'OpenViews'
+ lcPropName = 'A135' + lcPropName
+ CASE lcPropName == 'AutoOpenTables'
+ lcPropName = 'A140' + lcPropName
+ CASE lcPropName == 'AutoCloseTables'
+ lcPropName = 'A145' + lcPropName
+ CASE lcPropName == 'InitialSelectedAlias'
+ lcPropName = 'A150' + lcPropName
+ CASE lcPropName == 'DataSource'
+ lcPropName = 'A155' + lcPropName
+ CASE lcPropName == 'DataSourceType '
+ lcPropName = 'A160' + lcPropName
+ CASE lcPropName == 'Desktop'
+ lcPropName = 'A165' + lcPropName
+ CASE lcPropName == 'ShowWindow'
+ lcPropName = 'A170' + lcPropName
+ CASE lcPropName == 'ScrollBars'
+ lcPropName = 'A175' + lcPropName
+ CASE lcPropName == 'ShowInTaskBar'
+ lcPropName = 'A180' + lcPropName
+ CASE lcPropName == 'DoCreate'
+ lcPropName = 'A185' + lcPropName
+ CASE lcPropName == 'Tag'
+ lcPropName = 'A190' + lcPropName
+ CASE lcPropName == 'OLEDragMode'
+ lcPropName = 'A195' + lcPropName
+ CASE lcPropName == 'OLEDragPicture'
+ lcPropName = 'A200' + lcPropName
+ CASE lcPropName == 'OLEDropMode'
+ lcPropName = 'A205' + lcPropName
+ CASE lcPropName == 'OLEDropEffects'
+ lcPropName = 'A210' + lcPropName
+ CASE lcPropName == 'ShowTips'
+ lcPropName = 'A215' + lcPropName
+ CASE lcPropName == 'BufferMode'
+ lcPropName = 'A220' + lcPropName
+ CASE lcPropName == 'AutoCenter'
+ lcPropName = 'A225' + lcPropName
+ CASE lcPropName == 'AutoSize'
+ lcPropName = 'A230' + lcPropName
+ CASE lcPropName == 'WordWrap'
+ lcPropName = 'A235' + lcPropName
+ CASE lcPropName == 'Picture'
+ lcPropName = 'A240' + lcPropName
+ CASE lcPropName == 'BackStyle'
+ lcPropName = 'A245' + lcPropName
+ CASE lcPropName == 'BorderStyle'
+ lcPropName = 'A250' + lcPropName
+ CASE lcPropName == 'BorderWidth'
+ lcPropName = 'A255' + lcPropName
+ CASE lcPropName == 'Caption'
+ lcPropName = 'A260' + lcPropName
+ CASE lcPropName == 'ControlBox'
+ lcPropName = 'A265' + lcPropName
+ CASE lcPropName == 'Closable'
+ lcPropName = 'A270' + lcPropName
+ CASE lcPropName == 'Curvature'
+ lcPropName = 'A275' + lcPropName
+ CASE lcPropName == 'FontBold'
+ lcPropName = 'A280' + lcPropName
+ CASE lcPropName == 'FontCondense'
+ lcPropName = 'A285' + lcPropName
+ CASE lcPropName == 'FontExtend'
+ lcPropName = 'A290' + lcPropName
+ CASE lcPropName == 'FontItalic'
+ lcPropName = 'A295' + lcPropName
+ CASE lcPropName == 'FontName'
+ lcPropName = 'A300' + lcPropName
+ CASE lcPropName == 'FontOutline'
+ lcPropName = 'A305' + lcPropName
+ CASE lcPropName == 'FontShadow'
+ lcPropName = 'A310' + lcPropName
+ CASE lcPropName == 'FontSize'
+ lcPropName = 'A315' + lcPropName
+ CASE lcPropName == 'FontStrikethru'
+ lcPropName = 'A320' + lcPropName
+ CASE lcPropName == 'FontUnderline'
+ lcPropName = 'A325' + lcPropName
+ CASE lcPropName == 'HalfHeightCaption'
+ lcPropName = 'A330' + lcPropName
+ CASE lcPropName == 'Margin'
+ lcPropName = 'A335' + lcPropName
+ CASE lcPropName == 'MaxButton'
+ lcPropName = 'A340' + lcPropName
+ CASE lcPropName == 'MinButton'
+ lcPropName = 'A345' + lcPropName
+ CASE lcPropName == 'Movable'
+ lcPropName = 'A350' + lcPropName
+ CASE lcPropName == 'MaxHeight'
+ lcPropName = 'A355' + lcPropName
+ CASE lcPropName == 'MaxWidth'
+ lcPropName = 'A360' + lcPropName
+ CASE lcPropName == 'MinHeight'
+ lcPropName = 'A365' + lcPropName
+ CASE lcPropName == 'MinWidth'
+ lcPropName = 'A370' + lcPropName
+ CASE lcPropName == 'MaxTop'
+ lcPropName = 'A375' + lcPropName
+ CASE lcPropName == 'MaxLeft'
+ lcPropName = 'A380' + lcPropName
+ CASE lcPropName == 'MDIForm'
+ lcPropName = 'A385' + lcPropName
+ CASE lcPropName == 'MousePointer'
+ lcPropName = 'A390' + lcPropName
+ CASE lcPropName == 'MouseIcon'
+ lcPropName = 'A395' + lcPropName
+ CASE lcPropName == 'Visible'
+ lcPropName = 'A400' + lcPropName
+ CASE lcPropName == 'ClipControls'
+ lcPropName = 'A405' + lcPropName
+ CASE lcPropName == 'DrawMode'
+ lcPropName = 'A410' + lcPropName
+ CASE lcPropName == 'DrawStyle'
+ lcPropName = 'A415' + lcPropName
+ CASE lcPropName == 'DrawWidth'
+ lcPropName = 'A420' + lcPropName
+ CASE lcPropName == 'FillStyle'
+ lcPropName = 'A425' + lcPropName
+ CASE lcPropName == 'Enabled'
+ lcPropName = 'A430' + lcPropName
+ CASE lcPropName == 'Icon'
+ lcPropName = 'A435' + lcPropName
+ CASE lcPropName == 'KeyPreview'
+ lcPropName = 'A440' + lcPropName
+ CASE lcPropName == 'TabIndex'
+ lcPropName = 'A445' + lcPropName
+ CASE lcPropName == 'TabStop'
+ lcPropName = 'A450' + lcPropName
+ CASE lcPropName == 'TitleBar'
+ lcPropName = 'A455' + lcPropName
+ CASE lcPropName == 'WindowType'
+ lcPropName = 'A460' + lcPropName
+ CASE lcPropName == 'WindowState'
+ lcPropName = 'A465' + lcPropName
+ CASE lcPropName == 'LockScreen'
+ lcPropName = 'A470' + lcPropName
+ CASE lcPropName == 'AlwaysOnTop'
+ lcPropName = 'A475' + lcPropName
+ CASE lcPropName == 'AlwaysOnBottom'
+ lcPropName = 'A480' + lcPropName
+ CASE lcPropName == 'SizeBox'
+ lcPropName = 'A485' + lcPropName
+ CASE lcPropName == 'SpecialEffect'
+ lcPropName = 'A490' + lcPropName
+ CASE lcPropName == 'ZoomBox'
+ lcPropName = 'A495' + lcPropName
+ CASE lcPropName == 'ZOrderSet'
+ lcPropName = 'A500' + lcPropName
+ CASE lcPropName == 'HelpContextID'
+ lcPropName = 'A505' + lcPropName
+ CASE lcPropName == 'WhatsThisHelpID'
+ lcPropName = 'A510' + lcPropName
+ CASE lcPropName == 'WhatsThisHelp'
+ lcPropName = 'A515' + lcPropName
+ CASE lcPropName == 'WhatsThisButton'
+ lcPropName = 'A520' + lcPropName
+ CASE lcPropName == 'RightToLeft'
+ lcPropName = 'A525' + lcPropName
+ CASE lcPropName == 'DefOleLCID'
+ lcPropName = 'A530' + lcPropName
+ CASE lcPropName == 'MacDesktop'
+ lcPropName = 'A535' + lcPropName
+ CASE lcPropName == 'ColorSource'
+ lcPropName = 'A540' + lcPropName
+ CASE lcPropName == 'ForeColor'
+ lcPropName = 'A545' + lcPropName
+ CASE lcPropName == 'DisableForeColor'
+ lcPropName = 'A550' + lcPropName
+ CASE lcPropName == 'BackColor'
+ lcPropName = 'A555' + lcPropName
+ CASE lcPropName == 'FillColor'
+ lcPropName = 'A560' + lcPropName
+ CASE lcPropName == 'HScrollSmallChange'
+ lcPropName = 'A565' + lcPropName
+ CASE lcPropName == 'VScrollSmallChange'
+ lcPropName = 'A570' + lcPropName
+ CASE lcPropName == 'ContinuousScroll'
+ lcPropName = 'A575' + lcPropName
+ CASE lcPropName == 'Themes'
+ lcPropName = 'A580' + lcPropName
+ CASE lcPropName == 'BindControls'
+ lcPropName = 'A585' + lcPropName
+ CASE lcPropName == 'AllowOutput'
+ lcPropName = 'A590' + lcPropName
+ CASE lcPropName == 'Dockable'
+ lcPropName = 'A595' + lcPropName
+ CASE lcPropName == 'Name'
+ lnPropType = 1 && System "Name" property
+ lcPropName = 'Z000' + lcPropName
+ OTHERWISE
+ lnPropType = 2 && User property
+ lcPropName = 'A999' + lcPropName
+ ENDCASE
+
+ RETURN lcPropName
+ ENDPROC
+
+
*******************************************************************************************************************
PROCEDURE sortPropsAndValues
* KNOWLEDGE BASE:
@@ -1330,89 +1642,120 @@ DEFINE CLASS c_conversor_base AS SESSION
EXTERNAL ARRAY taPropsAndValues
TRY
- LOCAL I, X, lnArrayCols, laPropsAndValues(1,2)
+ LOCAL I, X, lnArrayCols, laPropsAndValues(1,2), lcPropName
lnArrayCols = ALEN( taPropsAndValues, 2 )
DIMENSION laPropsAndValues( tnPropsAndValues_Count, lnArrayCols )
ACOPY( taPropsAndValues, laPropsAndValues )
- IF m.tnSortType >= 1
- * CON SORT:
- * - A las que no tienen '.' les pongo 'A' por delante, y al resto 'B' por delante para que queden al final
- FOR I = 1 TO m.tnPropsAndValues_Count
- IF '.' $ laPropsAndValues(I,1)
- IF m.tnSortType = 2 AND JUSTEXT( laPropsAndValues(I,1) ) == 'Name'
- laPropsAndValues(I,1) = JUSTSTEM( laPropsAndValues(I,1) ) + '.' + CHR(255) + 'Name'
- ENDIF
+ WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
+ IF m.tnSortType >= 1
+ * CON SORT:
+ * - A las que no tienen '.' les pongo 'A' por delante, y al resto 'B' por delante para que queden al final
+ FOR I = 1 TO m.tnPropsAndValues_Count
+ IF '.' $ laPropsAndValues(I,1)
+ *IF m.tnSortType = 2 AND JUSTEXT( laPropsAndValues(I,1) ) == 'Name'
+ * laPropsAndValues(I,1) = JUSTSTEM( laPropsAndValues(I,1) ) + '.' + CHR(255) + 'Name'
+ *ENDIF
- laPropsAndValues(I,1) = 'B' + laPropsAndValues(I,1)
- ELSE
- IF m.tnSortType = 2 AND laPropsAndValues(I,1) == 'Name'
- laPropsAndValues(I,1) = CHR(255) + 'Name'
- ENDIF
+ *laPropsAndValues(I,1) = 'B' + laPropsAndValues(I,1)
+ IF m.tnSortType = 2
+ laPropsAndValues(I,1) = 'B' + JUSTSTEM(laPropsAndValues(I,1)) + '.' ;
+ + .sortPropsAndValues_SetAndGetSCXPropNames( 'SETNAME', JUSTEXT(laPropsAndValues(I,1)) )
+ ELSE
+ laPropsAndValues(I,1) = 'B' + laPropsAndValues(I,1)
+ ENDIF
+ ELSE
+ *IF m.tnSortType = 2 AND laPropsAndValues(I,1) == 'Name'
+ * laPropsAndValues(I,1) = CHR(255) + 'Name'
+ *ENDIF
- laPropsAndValues(I,1) = 'A' + laPropsAndValues(I,1)
+ *laPropsAndValues(I,1) = 'A' + laPropsAndValues(I,1)
+ IF m.tnSortType = 2
+ laPropsAndValues(I,1) = .sortPropsAndValues_SetAndGetSCXPropNames( 'SETNAME', laPropsAndValues(I,1) )
+ ELSE
+ laPropsAndValues(I,1) = 'A' + laPropsAndValues(I,1)
+ ENDIF
+ ENDIF
+ ENDFOR
+
+ IF .l_PropSort_Enabled
+ ASORT( laPropsAndValues, 1, -1, 0, 1)
ENDIF
- ENDFOR
- IF THIS.l_PropSort_Enabled
- ASORT( laPropsAndValues, 1, -1, 0, 1)
+
+ FOR I = 1 TO m.tnPropsAndValues_Count
+ *taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 ) && Quitar el carácter agregado
+
+ *-- Quitar caracteres agregados antes del SORT
+ IF '.' $ laPropsAndValues(I,1)
+ IF m.tnSortType = 2
+ laPropsAndValues(I,1) = JUSTSTEM( SUBSTR( laPropsAndValues(I,1), 2 ) ) + '.' ;
+ + .sortPropsAndValues_SetAndGetSCXPropNames( 'GETNAME', JUSTEXT(laPropsAndValues(I,1)) )
+ ELSE
+ taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 )
+ ENDIF
+ ELSE
+ IF m.tnSortType = 2
+ laPropsAndValues(I,1) = .sortPropsAndValues_SetAndGetSCXPropNames( 'GETNAME', laPropsAndValues(I,1) )
+ ELSE
+ taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 )
+ ENDIF
+ ENDIF
+
+ taPropsAndValues(I,2) = laPropsAndValues(I,2)
+
+ IF lnArrayCols >= 3
+ taPropsAndValues(I,3) = laPropsAndValues(I,3)
+ ENDIF
+
+ *DO CASE
+ *CASE m.tnSortType <> 2
+ * *-- Saltear
+ *CASE taPropsAndValues(I,1) == CHR(255) + 'Name'
+ * taPropsAndValues(I,1) = 'Name'
+ *CASE JUSTEXT( taPropsAndValues(I,1) ) == CHR(255) + 'Name'
+ * taPropsAndValues(I,1) = JUSTSTEM( taPropsAndValues(I,1) ) + '.Name'
+ *ENDCASE
+ ENDFOR
+
+ ELSE && m.tnSortType = 0
+ *-- SIN SORT: Creo 2 arrays, el bueno y el temporal, y al terminar agrego el temporal al bueno.
+ *-- Debo separar las props.normales de las de los objetos (ocurre cuando es un ADD OBJECT)
+ X = 0
+
+ *-- PRIMERO las que no tienen punto
+ FOR I = 1 TO m.tnPropsAndValues_Count
+ IF EMPTY( laPropsAndValues(I,1) )
+ LOOP
+ ENDIF
+
+ IF NOT '.' $ laPropsAndValues(I,1)
+ X = X + 1
+ taPropsAndValues(X,1) = laPropsAndValues(I,1)
+ taPropsAndValues(X,2) = laPropsAndValues(I,2)
+ IF lnArrayCols >= 3
+ taPropsAndValues(X,3) = laPropsAndValues(I,3)
+ ENDIF
+ ENDIF
+ ENDFOR
+
+ *-- LUEGO las demás props.
+ FOR I = 1 TO m.tnPropsAndValues_Count
+ IF EMPTY( laPropsAndValues(I,1) )
+ LOOP
+ ENDIF
+
+ IF '.' $ laPropsAndValues(I,1)
+ X = X + 1
+ taPropsAndValues(X,1) = laPropsAndValues(I,1)
+ taPropsAndValues(X,2) = laPropsAndValues(I,2)
+ IF lnArrayCols >= 3
+ taPropsAndValues(X,3) = laPropsAndValues(I,3)
+ ENDIF
+ ENDIF
+ ENDFOR
ENDIF
-
-
- FOR I = 1 TO m.tnPropsAndValues_Count
- taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 ) && Quitar el carácter agregado
- taPropsAndValues(I,2) = laPropsAndValues(I,2)
- IF lnArrayCols >= 3
- taPropsAndValues(I,3) = laPropsAndValues(I,3)
- ENDIF
-
- DO CASE
- CASE m.tnSortType <> 2
- *-- Saltear
- CASE taPropsAndValues(I,1) == CHR(255) + 'Name'
- taPropsAndValues(I,1) = 'Name'
- CASE JUSTEXT( taPropsAndValues(I,1) ) == CHR(255) + 'Name'
- taPropsAndValues(I,1) = JUSTSTEM( taPropsAndValues(I,1) ) + '.Name'
- ENDCASE
- ENDFOR
-
- ELSE && m.tnSortType = 0
- *-- SIN SORT: Creo 2 arrays, el bueno y el temporal, y al terminar agrego el temporal al bueno.
- *-- Debo separar las props.normales de las de los objetos (ocurre cuando es un ADD OBJECT)
- X = 0
-
- *-- PRIMERO las que no tienen punto
- FOR I = 1 TO m.tnPropsAndValues_Count
- IF EMPTY( laPropsAndValues(I,1) )
- LOOP
- ENDIF
-
- IF NOT '.' $ laPropsAndValues(I,1)
- X = X + 1
- taPropsAndValues(X,1) = laPropsAndValues(I,1)
- taPropsAndValues(X,2) = laPropsAndValues(I,2)
- IF lnArrayCols >= 3
- taPropsAndValues(X,3) = laPropsAndValues(I,3)
- ENDIF
- ENDIF
- ENDFOR
-
- *-- LUEGO las demás props.
- FOR I = 1 TO m.tnPropsAndValues_Count
- IF EMPTY( laPropsAndValues(I,1) )
- LOOP
- ENDIF
-
- IF '.' $ laPropsAndValues(I,1)
- X = X + 1
- taPropsAndValues(X,1) = laPropsAndValues(I,1)
- taPropsAndValues(X,2) = laPropsAndValues(I,2)
- IF lnArrayCols >= 3
- taPropsAndValues(X,3) = laPropsAndValues(I,3)
- ENDIF
- ENDIF
- ENDFOR
- ENDIF
+ ENDWITH && THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
*-- VER ESTO SI HACE FALTA, SOBRE LO DE PONER LOS METODOS AL FINAL Y ADAPTAR
*-- Agregar propiedades primero
@@ -3253,7 +3596,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin
C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile )
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
- THIS.doBackup()
+ THIS.doBackup( .F., .T. )
*-- Creo la librería
THIS.createClasslib()
@@ -3517,7 +3860,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile )
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
- THIS.doBackup()
+ THIS.doBackup( .F., .T. )
*-- Creo el form
THIS.createForm()
@@ -3686,59 +4029,56 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
THIS.insert_AllObjects( @loClase )
-
- IF .F. &&NOT loClase._BaseClass == 'dataenvironment'
- *-- Inserto el COMMENT
- INSERT INTO TABLABIN ;
- ( PLATFORM ;
- , UNIQUEID ;
- , TIMESTAMP ;
- , CLASS ;
- , CLASSLOC ;
- , BASECLASS ;
- , OBJNAME ;
- , PARENT ;
- , PROPERTIES ;
- , PROTECTED ;
- , METHODS ;
- , OLE ;
- , OLE2 ;
- , RESERVED1 ;
- , RESERVED2 ;
- , RESERVED3 ;
- , RESERVED4 ;
- , RESERVED5 ;
- , RESERVED6 ;
- , RESERVED7 ;
- , RESERVED8 ;
- , USER) ;
- VALUES ;
- ( 'COMMENT' ;
- , 'RESERVED' ;
- , loClase._TimeStamp ;
- , '' ;
- , '' ;
- , '' ;
- , loClase._ObjName ;
- , '' ;
- , '' ;
- , '' ;
- , '' ;
- , '' ;
- , '' ;
- , '' ;
- , IIF(loClase._OlePublic, 'OLEPublic', '') ;
- , '' ;
- , '' ;
- , '' ;
- , '' ;
- , '' ;
- , '' ;
- , '' )
- ENDIF
-
ENDFOR && I = 1 TO toModulo._Clases_Count
+ *-- Inserto el COMMENT final
+ INSERT INTO TABLABIN ;
+ ( PLATFORM ;
+ , UNIQUEID ;
+ , TIMESTAMP ;
+ , CLASS ;
+ , CLASSLOC ;
+ , BASECLASS ;
+ , OBJNAME ;
+ , PARENT ;
+ , PROPERTIES ;
+ , PROTECTED ;
+ , METHODS ;
+ , OLE ;
+ , OLE2 ;
+ , RESERVED1 ;
+ , RESERVED2 ;
+ , RESERVED3 ;
+ , RESERVED4 ;
+ , RESERVED5 ;
+ , RESERVED6 ;
+ , RESERVED7 ;
+ , RESERVED8 ;
+ , USER) ;
+ VALUES ;
+ ( 'COMMENT' ;
+ , 'RESERVED' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' ;
+ , '' )
+
USE IN (SELECT("TABLABIN"))
COMPILE FORM (THIS.c_OutputFile)
@@ -3798,7 +4138,7 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin
C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile )
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
- THIS.doBackup()
+ THIS.doBackup( .F., .T. )
*-- Creo solo la cabecera del proyecto
THIS.createProject()
@@ -4504,7 +4844,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin
C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile )
lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE )
- THIS.doBackup()
+ THIS.doBackup( .F., .T. )
*-- Creo el reporte
THIS.createReport()