Changeset: 15 Changeset: 15 - Arreglo bug "Name"
This commit is contained in:
@@ -41,11 +41,13 @@
|
|||||||
* 27/11/2013 FDBOZZO v1.4 Agregado soporte comodines *.VCX, configuraci<63>n de extensiones (vca), par<61>metro p/log
|
* 27/11/2013 FDBOZZO v1.4 Agregado soporte comodines *.VCX, configuraci<63>n de extensiones (vca), par<61>metro p/log
|
||||||
* 27/11/2013 FDBOZZO v1.5 Arreglo bug que no generaba form completo
|
* 27/11/2013 FDBOZZO v1.5 Arreglo bug que no generaba form completo
|
||||||
* 01/12/2013 FDBOZZO v1.6 Refactorizaci<63>n completa generaci<63>n BIN y PRG, cambio de algoritmos, arreglo de bugs, Unit Testing con FoxUnit
|
* 01/12/2013 FDBOZZO v1.6 Refactorizaci<63>n completa generaci<63>n BIN y PRG, cambio de algoritmos, arreglo de bugs, Unit Testing con FoxUnit
|
||||||
|
* 02/12/2013 FDBOZZO v1.7 Arreglo bug "Name", agregado mensaje de ayuda si se llama sin par<61>metros, verificaci<63>n y logueo de archivos READONLY con debug activa
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
* TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)
|
* TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)
|
||||||
* 23/11/2013 Luis Mart<72>nez REPORTE BUG: En algunos forms solo se generaba el dataenvironment (arreglado en v.1.5)
|
* 23/11/2013 Luis Mart<72>nez REPORTE BUG: En algunos forms solo se generaba el dataenvironment (arreglado en v.1.5)
|
||||||
* 27/11/2013 Fidel Charny REPORTE BUG: Error en el guardado de ciertas propiedades de array (arreglado en v.1.6)
|
* 27/11/2013 Fidel Charny REPORTE BUG: Error en el guardado de ciertas propiedades de array (arreglado en v.1.6)
|
||||||
|
* 02/12/2013 Fidel Charny REPORTE BUG: Se pierden algunas propiedades y no muestra picture si "Name" no es la <20>ltima (arreglado en v.1.7)
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
* TRAMIENTOS ESPECIALES DE ASIGNACIONES DE PROPIEDADES:
|
* TRAMIENTOS ESPECIALES DE ASIGNACIONES DE PROPIEDADES:
|
||||||
@@ -165,6 +167,12 @@ ENDIF
|
|||||||
|
|
||||||
IF EMPTY(tc_InputFile)
|
IF EMPTY(tc_InputFile)
|
||||||
lnResp = 1
|
lnResp = 1
|
||||||
|
MESSAGEBOX( 'FOXBIN2PRG <cFileSpec.Ext> [cType_NA cTextName_NA cGenText_NA cDontShowErrors cDebug]' + CR_LF + CR_LF ;
|
||||||
|
+ 'Ejemplo para generar los TXT de todos los VCX de c:\desa\clases, sin mostrar ventana de error y generando LOG: ' + CR_LF ;
|
||||||
|
+ ' FOXBIN2PRG "c:\desa\clases\*.vcx" "0" "0" "0" "1" "1"' + CR_LF + CR_LF ;
|
||||||
|
+ 'Ejemplo para generar los VCX de todos los TXT de c:\desa\clases, sin mostrar ventana de error y sin LOG: ' + CR_LF ;
|
||||||
|
+ ' FOXBIN2PRG "c:\desa\clases\*.vc2" "0" "0" "0" "1" "0"' ;
|
||||||
|
, 0+64+4096, 'FOXBIN2PRG: SINTAXIS INFO', 60000 )
|
||||||
ELSE
|
ELSE
|
||||||
lcSys16 = SYS(16)
|
lcSys16 = SYS(16)
|
||||||
lcPath = SET("Path")
|
lcPath = SET("Path")
|
||||||
@@ -190,7 +198,12 @@ ELSE
|
|||||||
|
|
||||||
|
|
||||||
*-- Evaluaci<63>n de FileSpec de entrada
|
*-- Evaluaci<63>n de FileSpec de entrada
|
||||||
IF '*' $ JUSTSTEM( tc_InputFile )
|
DO CASE
|
||||||
|
CASE '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile )
|
||||||
|
MESSAGEBOX( 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vac<61>os).' ;
|
||||||
|
, 0+48+4096, 'FOXBIN2PRG: ERROR!!', 10000 )
|
||||||
|
|
||||||
|
CASE '*' $ JUSTSTEM( tc_InputFile )
|
||||||
*-- Se quieren todos los archivos de una extensi<73>n
|
*-- Se quieren todos los archivos de una extensi<73>n
|
||||||
lcFileSpec = FULLPATH( tc_InputFile )
|
lcFileSpec = FULLPATH( tc_InputFile )
|
||||||
CD (JUSTPATH(lcFileSpec))
|
CD (JUSTPATH(lcFileSpec))
|
||||||
@@ -214,7 +227,8 @@ ELSE
|
|||||||
ENDIF
|
ENDIF
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
ELSE
|
OTHERWISE
|
||||||
|
*-- Un archivo individual
|
||||||
IF FILE(tc_InputFile)
|
IF FILE(tc_InputFile)
|
||||||
CD (JUSTPATH(tc_InputFile))
|
CD (JUSTPATH(tc_InputFile))
|
||||||
loCnv.c_LogFile = tc_InputFile + '.LOG'
|
loCnv.c_LogFile = tc_InputFile + '.LOG'
|
||||||
@@ -228,7 +242,7 @@ ELSE
|
|||||||
|
|
||||||
lnResp = loCnv.Convertir( tc_InputFile )
|
lnResp = loCnv.Convertir( tc_InputFile )
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDIF
|
ENDCASE
|
||||||
|
|
||||||
CD (JUSTPATH(lcSys16))
|
CD (JUSTPATH(lcSys16))
|
||||||
SET PATH TO (lcPath)
|
SET PATH TO (lcPath)
|
||||||
@@ -385,7 +399,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
|||||||
THIS.writeLog( lcErrorInfo )
|
THIS.writeLog( lcErrorInfo )
|
||||||
ENDIF
|
ENDIF
|
||||||
IF THIS.l_Debug AND THIS.l_ShowErrors
|
IF THIS.l_Debug AND THIS.l_ShowErrors
|
||||||
MESSAGEBOX( lcErrorInfo, 0+16+4096, 'FOXBIN2PRG: ERROR!', 5*60*1000 )
|
MESSAGEBOX( lcErrorInfo, 0+16+4096, 'FOXBIN2PRG: ERROR!!', 10000 )
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDTRY
|
ENDTRY
|
||||||
|
|
||||||
@@ -3928,9 +3942,6 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
|
|||||||
|
|
||||||
USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN
|
USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN
|
||||||
|
|
||||||
*IF FILE('C_SUB_OBJS.CDX')
|
|
||||||
* ERASE 'C_SUB_OBJS.CDX'
|
|
||||||
*ENDIF
|
|
||||||
INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE
|
INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE
|
||||||
SET ORDER TO 0 IN TABLABIN
|
SET ORDER TO 0 IN TABLABIN
|
||||||
|
|
||||||
@@ -4011,7 +4022,9 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
|
|||||||
THIS.write_ENDDEFINE_SiCorresponde( lnLastClass )
|
THIS.write_ENDDEFINE_SiCorresponde( lnLastClass )
|
||||||
|
|
||||||
*-- Genero el VC2
|
*-- Genero el VC2
|
||||||
STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile )
|
IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
|
||||||
|
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
|
||||||
|
ENDIF
|
||||||
|
|
||||||
CATCH TO loEx
|
CATCH TO loEx
|
||||||
lnCodError = loEx.ERRORNO
|
lnCodError = loEx.ERRORNO
|
||||||
@@ -4154,7 +4167,9 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
|
|||||||
THIS.write_ENDDEFINE_SiCorresponde( lnLastClass )
|
THIS.write_ENDDEFINE_SiCorresponde( lnLastClass )
|
||||||
|
|
||||||
*-- Genero el SC2
|
*-- Genero el SC2
|
||||||
STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile )
|
IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
|
||||||
|
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
|
||||||
|
ENDIF
|
||||||
|
|
||||||
CATCH TO loEx
|
CATCH TO loEx
|
||||||
lnCodError = loEx.ERRORNO
|
lnCodError = loEx.ERRORNO
|
||||||
@@ -4446,7 +4461,9 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg
|
|||||||
|
|
||||||
|
|
||||||
*-- Genero el PJ2
|
*-- Genero el PJ2
|
||||||
STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile )
|
IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
|
||||||
|
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
|
||||||
|
ENDIF
|
||||||
*COMPILE ( THIS.c_outputFile )
|
*COMPILE ( THIS.c_outputFile )
|
||||||
|
|
||||||
|
|
||||||
@@ -4604,7 +4621,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
LOCAL lcMemo, laPropsAndValues(1,2), lnPropsAndValues_Count
|
LOCAL lcMemo, laPropsAndValues(1,2), lnPropsAndValues_Count
|
||||||
|
|
||||||
*-- Defino los objetos a cargar
|
*-- Defino los objetos a cargar
|
||||||
THIS.get_PropsAndValuesFrom_PROPERTIES( toRegObj.PROPERTIES, .T., @laPropsAndValues, @lnPropsAndValues_Count, @lcMemo )
|
THIS.get_PropsAndValuesFrom_PROPERTIES( toRegObj.PROPERTIES, 1, @laPropsAndValues, @lnPropsAndValues_Count, @lcMemo )
|
||||||
*lcMemo = THIS.set_MultilineMemoWithAddObjectProperties( lcMemo, C_TAB + C_TAB, .T. )
|
*lcMemo = THIS.set_MultilineMemoWithAddObjectProperties( lcMemo, C_TAB + C_TAB, .T. )
|
||||||
lcMemo = THIS.set_MultilineMemoWithAddObjectProperties( @laPropsAndValues, @lnPropsAndValues_Count, C_TAB + C_TAB, .T. )
|
lcMemo = THIS.set_MultilineMemoWithAddObjectProperties( @laPropsAndValues, @lnPropsAndValues_Count, C_TAB + C_TAB, .T. )
|
||||||
|
|
||||||
@@ -4831,7 +4848,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
*-- DEFINIR PROPIEDADES ( HIDDEN, PROTECTED, *DEFINED_PAM )
|
*-- DEFINIR PROPIEDADES ( HIDDEN, PROTECTED, *DEFINED_PAM )
|
||||||
DIMENSION taProtected(1)
|
DIMENSION taProtected(1)
|
||||||
STORE '' TO lcHiddenProp, lcProtectedProp, lcPropsMethodsDefd
|
STORE '' TO lcHiddenProp, lcProtectedProp, lcPropsMethodsDefd
|
||||||
THIS.get_PropsAndValuesFrom_PROPERTIES( toRegClass.PROPERTIES, .T., @taPropsAndValues, @lnPropsAndValues_Count, '' )
|
THIS.get_PropsAndValuesFrom_PROPERTIES( toRegClass.PROPERTIES, 1, @taPropsAndValues, @lnPropsAndValues_Count, '' )
|
||||||
THIS.get_PropsAndCommentsFrom_RESERVED3( toRegClass.RESERVED3, .T., @taPropsAndComments, @lnPropsAndComments_Count, '' )
|
THIS.get_PropsAndCommentsFrom_RESERVED3( toRegClass.RESERVED3, .T., @taPropsAndComments, @lnPropsAndComments_Count, '' )
|
||||||
THIS.get_PropsFrom_PROTECTED( toRegClass.PROTECTED, .T., @taProtected, 0, '' )
|
THIS.get_PropsFrom_PROTECTED( toRegClass.PROTECTED, .T., @taProtected, 0, '' )
|
||||||
|
|
||||||
@@ -5128,19 +5145,23 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
PROCEDURE get_PropsAndValuesFrom_PROPERTIES
|
PROCEDURE get_PropsAndValuesFrom_PROPERTIES
|
||||||
*-- Sirve para el memo PROPERTIES
|
*-- Sirve para el memo PROPERTIES
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
|
|
||||||
* tcMemo (v! IN ) Contenido de un campo MEMO
|
|
||||||
* tlSort (v? IN ) Indica si se deben ordenar alfab<61>ticamente los nombres
|
|
||||||
* taPropsAndValues (@! OUT) Array con las propiedades y comentarios
|
|
||||||
* tnPropsAndValues_Count (@! OUT) Cantidad de propiedades
|
|
||||||
* tcSortedMemo (@? OUT) Contenido del campo memo ordenado
|
|
||||||
*---------------------------------------------------------------------------------------------------
|
|
||||||
* KNOWLEDGE BASE:
|
* KNOWLEDGE BASE:
|
||||||
* 29/11/2013 FDBOZZO En un pageframe, si las props.nativas del mismo no est<73>n antes que las de
|
* 29/11/2013 FDBOZZO En un pageframe, si las props.nativas del mismo no est<73>n antes que las de
|
||||||
* los objetos contenidos, causa un error. Se deben ordenar primero las
|
* los objetos contenidos, causa un error. Se deben ordenar primero las
|
||||||
* props.nativas (sin punto) y luego las de los objetos (con punto)
|
* props.nativas (sin punto) y luego las de los objetos (con punto)
|
||||||
|
*
|
||||||
|
* 02/12/2013 FDBOZZO Fidel Charny me pas<61> un ejemplo donde se pierden propiedades f<>sicamente
|
||||||
|
* si se ordenan alfab<61>ticamente en un ADD OBJECT. Pierde "picture" y otras m<>s.
|
||||||
|
* Pareciera que la <20>ltima debe ser "Name".
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
LPARAMETERS tcMemo, tlSort, taPropsAndValues, tnPropsAndValues_Count, tcSortedMemo
|
* PAR<EFBFBD>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
|
||||||
|
* tcMemo (v! IN ) Contenido de un campo MEMO
|
||||||
|
* tnSort (v? IN ) Indica si se deben ordenar alfab<61>ticamente los objetos y props (1), o no (0)
|
||||||
|
* taPropsAndValues (@! OUT) Array con las propiedades y comentarios
|
||||||
|
* tnPropsAndValues_Count (@! OUT) Cantidad de propiedades
|
||||||
|
* tcSortedMemo (@? OUT) Contenido del campo memo ordenado
|
||||||
|
*---------------------------------------------------------------------------------------------------
|
||||||
|
LPARAMETERS tcMemo, tnSort, taPropsAndValues, tnPropsAndValues_Count, tcSortedMemo
|
||||||
EXTERNAL ARRAY taPropsAndValues
|
EXTERNAL ARRAY taPropsAndValues
|
||||||
TRY
|
TRY
|
||||||
LOCAL laItems(1), I, X, lnLenAcum, lnPosEQ, lcPropName, lnLenVal, lcValue, lcMethods, laPropsAndValues(1,2)
|
LOCAL laItems(1), I, X, lnLenAcum, lnPosEQ, lcPropName, lnLenVal, lcValue, lcMethods, laPropsAndValues(1,2)
|
||||||
@@ -5156,6 +5177,8 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
EXIT
|
EXIT
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
|
||||||
|
*-- 1) OBTENCI<43>N Y SEPARACI<43>N DE PROPIEDADES Y VALORES
|
||||||
*-- Crear un array con los valores especiales que pueden estar repartidos entre varias lineas
|
*-- Crear un array con los valores especiales que pueden estar repartidos entre varias lineas
|
||||||
FOR I = 1 TO m.lnItemCount
|
FOR I = 1 TO m.lnItemCount
|
||||||
IF EMPTY( laItems(I) )
|
IF EMPTY( laItems(I) )
|
||||||
@@ -5205,17 +5228,27 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
ENDIF
|
ENDIF
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
|
|
||||||
|
*-- 2) SORT
|
||||||
tnPropsAndValues_Count = X
|
tnPropsAndValues_Count = X
|
||||||
lcMethods = ''
|
lcMethods = ''
|
||||||
|
|
||||||
IF m.tlSort
|
DO CASE
|
||||||
*-- CON SORT: A las que no tienen '.' les pongo 'A' por delante, y al resto 'B' por delante para que queden al final
|
CASE m.tnSort = 1
|
||||||
|
* CON SORT:
|
||||||
|
* - A las que no tienen '.' les pongo 'A' por delante, y al resto 'B' por delante para que queden al final
|
||||||
|
* - Las "Name" deben estar al final, por lo que les agrego "_" pro delante
|
||||||
FOR I = 1 TO m.tnPropsAndValues_Count
|
FOR I = 1 TO m.tnPropsAndValues_Count
|
||||||
IF '.' $ laPropsAndValues(I,1)
|
IF '.' $ laPropsAndValues(I,1)
|
||||||
laPropsAndValues(I,1) = 'B' + laPropsAndValues(I,1)
|
laPropsAndValues(I,1) = 'B' + laPropsAndValues(I,1)
|
||||||
ELSE
|
ELSE
|
||||||
laPropsAndValues(I,1) = 'A' + laPropsAndValues(I,1)
|
laPropsAndValues(I,1) = 'A' + laPropsAndValues(I,1)
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
*-- "Name" debe ser la <20>ltima. La modifico temporalmente. 02/12/2013 FDBOZZO
|
||||||
|
IF JUSTEXT( laPropsAndValues(I,1) ) == 'Name'
|
||||||
|
laPropsAndValues(I,1) = JUSTSTEM( laPropsAndValues(I,1) ) + '.' + CHR(255) + 'Name'
|
||||||
|
ENDIF
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
ASORT(laPropsAndValues,1,-1,0,1)
|
ASORT(laPropsAndValues,1,-1,0,1)
|
||||||
@@ -5226,9 +5259,15 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
FOR I = 1 TO m.tnPropsAndValues_Count
|
FOR I = 1 TO m.tnPropsAndValues_Count
|
||||||
taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 )
|
taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 )
|
||||||
taPropsAndValues(I,2) = laPropsAndValues(I,2)
|
taPropsAndValues(I,2) = laPropsAndValues(I,2)
|
||||||
|
|
||||||
|
*-- Restauro "Name". 02/12/2013 FDBOZZO
|
||||||
|
IF JUSTEXT( taPropsAndValues(I,1) ) == CHR(255) + 'Name'
|
||||||
|
taPropsAndValues(I,1) = JUSTSTEM( taPropsAndValues(I,1) ) + '.Name'
|
||||||
|
ENDIF
|
||||||
ENDFOR
|
ENDFOR
|
||||||
ELSE
|
|
||||||
*-- SIN SORT: Creo 2 arrays, el bueno y el otro, y al terminar agrego el otro al bueno.
|
CASE m.tnSort = 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)
|
*-- Debo separar las props.normales de las de los objetos (ocurre cuando es un ADD OBJECT)
|
||||||
X = 0
|
X = 0
|
||||||
DIMENSION taPropsAndValues( tnPropsAndValues_Count, 2 )
|
DIMENSION taPropsAndValues( tnPropsAndValues_Count, 2 )
|
||||||
@@ -5258,7 +5297,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
taPropsAndValues(X,2) = laPropsAndValues(I,2)
|
taPropsAndValues(X,2) = laPropsAndValues(I,2)
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDFOR
|
ENDFOR
|
||||||
ENDIF
|
ENDCASE
|
||||||
|
|
||||||
*-- Agregar propiedades primero
|
*-- Agregar propiedades primero
|
||||||
FOR I = 1 TO m.tnPropsAndValues_Count
|
FOR I = 1 TO m.tnPropsAndValues_Count
|
||||||
@@ -6305,6 +6344,8 @@ DEFINE CLASS CL_PROJ_SRV_HEAD AS CL_BASE
|
|||||||
+ [<memberdata name="setparsedinfoline" type="property" display="setParsedInfoLine"/>] ;
|
+ [<memberdata name="setparsedinfoline" type="property" display="setParsedInfoLine"/>] ;
|
||||||
+ [</VFPData>]
|
+ [</VFPData>]
|
||||||
|
|
||||||
|
*-- Informaci<63>n interesante sobre Servidores OLE y corrupci<63>n de IDs: http://www.west-wind.com/wconnect/weblog/ShowEntry.blog?id=880
|
||||||
|
|
||||||
*-- Server Head info
|
*-- Server Head info
|
||||||
DIMENSION _Servers[1]
|
DIMENSION _Servers[1]
|
||||||
_ServerCount = 0
|
_ServerCount = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user