2001-07-30 16:40 UTC+0300 Chen Kedem <niki@actcom.co.il>
This commit is contained in:
@@ -1,3 +1,30 @@
|
||||
2001-07-30 16:40 UTC+0300 Chen Kedem <niki@actcom.co.il>
|
||||
|
||||
* doc/en/memvar2.txt
|
||||
* doc/en/sayget.txt
|
||||
* doc/en/strotype.txt
|
||||
* doc/es/array.txt
|
||||
* doc/es/binnum.txt
|
||||
* doc/es/browse.txt
|
||||
* doc/es/command.txt
|
||||
* doc/es/compiler.txt
|
||||
* doc/es/datetime.txt
|
||||
* doc/es/dir.txt
|
||||
* doc/es/diskspac.txt
|
||||
* doc/es/error.txt
|
||||
* doc/es/eval.txt
|
||||
* doc/es/garbage.txt
|
||||
* doc/es/lang.txt
|
||||
* doc/es/memo.txt
|
||||
+ Add missing CVS ID
|
||||
|
||||
* doc/es/license.txt
|
||||
+ add missing CVS ID
|
||||
* small text formatting
|
||||
|
||||
* source/rtl/profiler.prg
|
||||
! Fix CVS ID
|
||||
|
||||
2001-07-26 16:21 UTC-0800 Ron Pinkas <ron@profit-master.com>
|
||||
* source/vm/macro.c
|
||||
* Corrected typo in trace message within hb_macroExpandString()
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/* $DOC$
|
||||
* $COMMANDNAME$
|
||||
* FIELD
|
||||
@@ -9,7 +13,7 @@
|
||||
* FIELD <xField> [,<xFieldn...> [in <cDatabase>]
|
||||
* $ARGUMENTS$
|
||||
* <xField> A valid field name
|
||||
*
|
||||
*
|
||||
* <xFieldn> Additional field name
|
||||
*
|
||||
* <cDatabase> An valid alias name
|
||||
@@ -28,7 +32,7 @@
|
||||
* $EXAMPLES$
|
||||
* Func main
|
||||
* FIELD iD
|
||||
* FIELD Name
|
||||
* FIELD Name
|
||||
* USE TESTS NEW
|
||||
* name:="Sales"
|
||||
* Id:=5
|
||||
@@ -90,7 +94,7 @@
|
||||
* LOCAL variables and arrays are not affected by the RELEASE command.
|
||||
* $EXAMPLES$
|
||||
* Function Main2()
|
||||
* Local n , lVar
|
||||
* Local n , lVar
|
||||
*
|
||||
* n := IIF( lVar, 'A', 3 )
|
||||
* n := 2
|
||||
@@ -99,11 +103,11 @@
|
||||
* n := int( seconds() + 2 )
|
||||
* Return( NIL )
|
||||
* $TESTS$
|
||||
* See Tests/testwarn.prg for more examples
|
||||
* See Tests/testwarn.prg for more examples
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* This command works exactaly as CA-Clipper.
|
||||
* This command works exactaly as CA-Clipper.
|
||||
* $PLATFORMS$
|
||||
* All
|
||||
* $FILES$
|
||||
@@ -121,7 +125,7 @@
|
||||
* $ONELINER$
|
||||
* Declares private and public variables and arrays.
|
||||
* $SYNTAX$
|
||||
* MEMVAR <xVar>
|
||||
* MEMVAR <xVar>
|
||||
* $ARGUMENTS$
|
||||
* <xVar> Memory variable Name
|
||||
* $RETURNS$
|
||||
@@ -140,7 +144,7 @@
|
||||
* $EXAMPLES$
|
||||
* MEMVAR y As Numeric
|
||||
* Function Main2()
|
||||
* Local n , lVar
|
||||
* Local n , lVar
|
||||
*
|
||||
* n := IIF( lVar, 'A', 3 )
|
||||
* n := 2
|
||||
@@ -151,7 +155,7 @@
|
||||
* ? y
|
||||
* Return( NIL )
|
||||
* $TESTS$
|
||||
* See Tests/testwarn.prg for more examples
|
||||
* See Tests/testwarn.prg for more examples
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/* $DOC$
|
||||
* $COMMANDNAME$
|
||||
* @...Get
|
||||
@@ -8,7 +12,7 @@
|
||||
* $SYNTAX$
|
||||
* @ <nRow>,<nCol> [SAY <cSay> [PICTURE <cSayPict>] COLOR <cSayColor> ]
|
||||
* GET <xVar> [PICTURE <cGetPict>] [WHEN <lWhen>] [COLOR <cGetColor>]
|
||||
* [VALID <lValid> / RANGE <xStart>,<xEnd>]
|
||||
* [VALID <lValid> / RANGE <xStart>,<xEnd>]
|
||||
* $ARGUMENTS$
|
||||
* <nRow> The row coordinate.
|
||||
*
|
||||
@@ -93,15 +97,15 @@
|
||||
* @S<nSize> Allows horizontal scrolling of a field or variable that
|
||||
* is <nSize> characters wide.
|
||||
* @X All negative numbers will be followed by DB
|
||||
* @Z Displays zero values as blanks.
|
||||
* @! Forces uppercase lettering
|
||||
* @Z Displays zero values as blanks.
|
||||
* @! Forces uppercase lettering
|
||||
* @( Displays negative numbers in parentheses with leading spaces.
|
||||
* @) Displays negative numbers in parentheses without leading spaces.
|
||||
* </table>
|
||||
|
||||
* GET templates/formatting rules:
|
||||
|
||||
* <table>
|
||||
* <table>
|
||||
* A Only alphabetic characters allowed.
|
||||
* N Only alphabetic and numeric characters allowed
|
||||
* X Any character allowed.
|
||||
@@ -156,13 +160,13 @@
|
||||
* @ <nRow>,<nCol> SAY <xValue> [ PICTURE <cPict> ] [COLOR <cColor>]
|
||||
* $ARGUMENTS$
|
||||
* <nRow> Row coordinate
|
||||
*
|
||||
*
|
||||
* <nCol> Column coordinate
|
||||
*
|
||||
*
|
||||
* <xValue> Value to display
|
||||
*
|
||||
*
|
||||
* <cPict> PICTURE format
|
||||
*
|
||||
*
|
||||
* <cColor> Color string
|
||||
* $RETURNS$
|
||||
* None
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* Strong Typing
|
||||
@@ -10,37 +14,37 @@
|
||||
* Checking". As you might know Clipper, generates a Run-Time Error,
|
||||
* ("Type Mismatch") when we attempt to perform some operations with
|
||||
* the wrong type of Variable.
|
||||
*
|
||||
*
|
||||
* Examples:
|
||||
*
|
||||
*
|
||||
* LOCAL Var1 := "A"
|
||||
*
|
||||
*
|
||||
* ? Var1 * 3 // Error here.
|
||||
*
|
||||
*
|
||||
* @ Var1, 7 SAY 'Hello' // Error here.
|
||||
*
|
||||
*
|
||||
* ? SubStr( "Hello", Var1 ) // Error here.
|
||||
*
|
||||
* The above 3 lines would all result in Run-Time Error, because Var1 is
|
||||
*
|
||||
* The above 3 lines would all result in Run-Time Error, because Var1 is
|
||||
* of type CHARACTER but the above lines used it as if it was of type
|
||||
* NUMERIC.
|
||||
*
|
||||
*
|
||||
* Using Strong Type Checking, or Compile-Time Type Checking, the above
|
||||
* problem would have been discovered and reported in COMPILE-TIME,
|
||||
* rather than waiting for the inevitable problem to be discovered when
|
||||
* we finally execute the program.
|
||||
*
|
||||
*
|
||||
* Strong Typed Languages allow the programmer to "tell" the compiler (declare)
|
||||
* what is the type of a each Variable, so that the Compiler in return can warn
|
||||
* the programmer, when ever such Declared (Strong Typed) Variable, is used in
|
||||
* a context which is incompatible with its declared type.
|
||||
*
|
||||
*
|
||||
* For instance, if we "told" the compiler that Var1 above is of type
|
||||
* CHARACTER (LOCAL Var1 AS CHARACTER) the Harbour Compiler could, in
|
||||
* return, warn us if we attempted to perform the calculation:
|
||||
*
|
||||
*
|
||||
* Var1 * 3
|
||||
*
|
||||
*
|
||||
* because the Compiler knows we can't perform a multiplication of a
|
||||
* Character. (we might allow it in some context, but this is beyond
|
||||
* the scope of this discussion). Similarly we would have been warned
|
||||
@@ -48,14 +52,14 @@
|
||||
* 2nd operand of the SubStr() function SubStr( "Hello", Var1) ),
|
||||
* because the Compiler knows that these operations require a NUMERIC
|
||||
* rather than CHARACTER type.
|
||||
*
|
||||
*
|
||||
* The above may save us lots of time, by pointing a problem, we can not
|
||||
* escape, since such code will never perform correctly once executed.
|
||||
* So rather than wait to the testing cycle, for such problems to be
|
||||
* discovered, (and some times even later, after we may have
|
||||
* distributed our applications) instead we may know of such problems
|
||||
* as soon as we type HARBOUR ProgName -w3
|
||||
*
|
||||
*
|
||||
* Harbour also offers a hybrid mode, where it can report such type
|
||||
* mismatch problems, even without requiring the programmer to declare
|
||||
* the type of variables. This feature, is referred to as Adaptive Type
|
||||
@@ -68,7 +72,7 @@
|
||||
* another value. Therefore Harbour will "remember" that Var1 "adapted"
|
||||
* type CHARACTER, and thus the subsequent multiplication Var1 * 3, will
|
||||
* be reported as an error, as soon as you attempt to compile such code.
|
||||
*
|
||||
*
|
||||
* The nice aspect of this hybrid mode, is that unlike Strong Typed
|
||||
* Variables,you don't have to declare the type, so no code changes
|
||||
* are need, the Type instead is assumed by implication (type of the
|
||||
@@ -78,12 +82,12 @@
|
||||
* will than protect us from using the Variable in an incompatible
|
||||
* context, since the variable "adapted" this type as soon as we
|
||||
* assigned a value which implies a type.
|
||||
*
|
||||
*
|
||||
* While Adapted Type Checking may be fairly effective in reporting many
|
||||
* common mistakes, to take full benefits of such Compile-Time checking,
|
||||
* it is recommended to do declare the Type of Variables, when ever
|
||||
* possible.
|
||||
*
|
||||
*
|
||||
* The Harbour Strong Type features, also allows the declaration of the
|
||||
* expected parameters (including optionals) of User Defined Functions,
|
||||
* as well as their return Type. Similarly, you may declare the Type of
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
@@ -5,8 +8,8 @@
|
||||
*
|
||||
* Copyright 2000 Alejandro de Gárate <alex_degarate@hotmail.com>
|
||||
* Documentación en Español de: ARRAY(), AADD(), ASIZE(), ATAIL(), ASIZE(),
|
||||
* AINS(), ADEL(), ADEL(), AFILL(), ASCAN()
|
||||
* AEVAL(), ACOPY(), ACLONE(), ASORT()
|
||||
* AINS(), ADEL(), ADEL(), AFILL(), ASCAN()
|
||||
* AEVAL(), ACOPY(), ACLONE(), ASORT()
|
||||
*
|
||||
* Vea doc/license.txt por los términos de la licencia.
|
||||
*
|
||||
@@ -653,4 +656,3 @@
|
||||
* ASCAN(),EVAL(),SORT
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
* www - http://www.harbour-project.org
|
||||
*
|
||||
* Copyright 2000 Alejandro de Gárate <alex_degarate@hotmail.com>
|
||||
* Documentación en Español de: BIN2W(), BIN2I(), BIN2L(), BIN2U(), I2BIN(),
|
||||
* Documentación en Español de: BIN2W(), BIN2I(), BIN2L(), BIN2U(), I2BIN(),
|
||||
* W2BIN(), L2BIN(), U2BIN()
|
||||
*
|
||||
*
|
||||
* Copyright 2000 Chen Kedem <niki@actcom.co.il>
|
||||
* Documentación en Inglés de: BIN2W(), BIN2I(), BIN2L(), BIN2U(), I2BIN(),
|
||||
* Documentación en Inglés de: BIN2W(), BIN2I(), BIN2L(), BIN2U(), I2BIN(),
|
||||
* W2BIN(), L2BIN(), U2BIN()
|
||||
*
|
||||
* Vea doc/license.txt por los términos de la licencia.
|
||||
@@ -19,18 +22,18 @@
|
||||
* $FUNCNAME$
|
||||
* BIN2W()
|
||||
* $CATEGORY$
|
||||
* Conversión binaria
|
||||
* Conversión binaria
|
||||
* $ONELINER$
|
||||
* Convierte 2 bytes de un entero corto sin signo en un número en Harbour
|
||||
* Convierte 2 bytes de un entero corto sin signo en un número en Harbour
|
||||
* $SYNTAX$
|
||||
* BIN2W( <cBuffer> ) --> nNumero
|
||||
* $ARGUMENTS$
|
||||
* <cBuffer> es una cadena de caracteres que contiene un entero corto
|
||||
* sin signo codificado en 16 bits (byte menos significativo primero).
|
||||
* Los primeros dos bytes son tenidos en cuenta, si hay más son
|
||||
* ignorados.
|
||||
* <cBuffer> es una cadena de caracteres que contiene un entero corto
|
||||
* sin signo codificado en 16 bits (byte menos significativo primero).
|
||||
* Los primeros dos bytes son tenidos en cuenta, si hay más son
|
||||
* ignorados.
|
||||
* $RETURNS$
|
||||
* BIN2W() retorna un número entero (ó cero si <cBuffer> no es una cadena).
|
||||
* BIN2W() retorna un número entero (ó cero si <cBuffer> no es una cadena).
|
||||
* $DESCRIPTION$
|
||||
* BIN2W() es una de las funciones de conversión binaria, de bajo nivel.
|
||||
* Estas funciones convierten entre un valor numérico en Harbour y una
|
||||
@@ -40,10 +43,10 @@
|
||||
*
|
||||
* Ud podría preguntarse cual es la necesidad de este tipo de funciones,
|
||||
* bueno, primero de todo esta permite leer/escribir información desde/
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* un archivo DBF), es también una forma útil de compartir información
|
||||
* desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
|
||||
* BIN2W() es la inversa de W2BIN()
|
||||
* BIN2W() es la inversa de W2BIN()
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
* // Muestra la longitud de la cabecera de un DBF
|
||||
@@ -64,7 +67,7 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* BIN2W() funciona exactamente como la función de CA-Clipper, BIN2W()
|
||||
* BIN2W() funciona exactamente como la función de CA-Clipper, BIN2W()
|
||||
* $FILES$
|
||||
* La librería es rtl
|
||||
* $SEEALSO$
|
||||
@@ -79,16 +82,16 @@
|
||||
* $CATEGORY$
|
||||
* Conversión binaria
|
||||
* $ONELINER$
|
||||
* Convierte 2 bytes de un entero corto con signo en un número en Harbour
|
||||
* Convierte 2 bytes de un entero corto con signo en un número en Harbour
|
||||
* $SYNTAX$
|
||||
* BIN2I( <cBuffer> ) --> nNumero
|
||||
* $ARGUMENTS$
|
||||
* <cBuffer> es una cadena de caracteres que contiene un entero corto
|
||||
* con signo codificado en 16 bits (byte menos significativo primero).
|
||||
* Los primeros dos bytes son tenidos en cuenta, si hay más son
|
||||
* ignorados.
|
||||
* <cBuffer> es una cadena de caracteres que contiene un entero corto
|
||||
* con signo codificado en 16 bits (byte menos significativo primero).
|
||||
* Los primeros dos bytes son tenidos en cuenta, si hay más son
|
||||
* ignorados.
|
||||
* $RETURNS$
|
||||
* BIN2I() retorna un número entero (ó cero si <cBuffer> no es una cadena).
|
||||
* BIN2I() retorna un número entero (ó cero si <cBuffer> no es una cadena).
|
||||
* $DESCRIPTION$
|
||||
* BIN2I() es una de las funciones de conversión binaria, de bajo nivel.
|
||||
* Estas funciones convierten entre un valor numérico en Harbour y una
|
||||
@@ -98,13 +101,13 @@
|
||||
*
|
||||
* Ud podría preguntarse cual es la necesidad de este tipo de funciones,
|
||||
* bueno, primero de todo esta permite leer/escribir información desde/
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* un archivo DBF), es tambien una forma útil de compartir información
|
||||
* desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
|
||||
* BIN2I() es la inversa de I2BIN()
|
||||
* BIN2I() es la inversa de I2BIN()
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
* // Muestra la fecha de la última actualización del DBF
|
||||
* // Muestra la fecha de la última actualización del DBF
|
||||
* FUNCTION main()
|
||||
* LOCAL nHandle, cAno, cMes, cDia
|
||||
* nHandle := FOPEN( "test.dbf" )
|
||||
@@ -126,7 +129,7 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* BIN2I() funciona exactamente como la función de CA-Clipper, BIN2I()
|
||||
* BIN2I() funciona exactamente como la función de CA-Clipper, BIN2I()
|
||||
* $FILES$
|
||||
* La librería es rtl
|
||||
* $SEEALSO$
|
||||
@@ -141,29 +144,29 @@
|
||||
* $CATEGORY$
|
||||
* Conversión binaria
|
||||
* $ONELINER$
|
||||
* Convierte 4 bytes de un entero largo con signo en un número en Harbour
|
||||
* Convierte 4 bytes de un entero largo con signo en un número en Harbour
|
||||
* $SYNTAX$
|
||||
* BIN2L( <cBuffer> ) --> nNumero
|
||||
* $ARGUMENTS$
|
||||
* <cBuffer> es una cadena de caracteres que contiene un entero largo
|
||||
* con signo codificado en 32 bits (byte menos significativo primero).
|
||||
* Los primeros cuatro bytes son tenidos en cuenta, si hay más son
|
||||
* ignorados.
|
||||
* con signo codificado en 32 bits (byte menos significativo primero).
|
||||
* Los primeros cuatro bytes son tenidos en cuenta, si hay más son
|
||||
* ignorados.
|
||||
* $RETURNS$
|
||||
* BIN2L() retorna un número entero (ó cero si <cBuffer> no es una cadena).
|
||||
* BIN2L() retorna un número entero (ó cero si <cBuffer> no es una cadena).
|
||||
* $DESCRIPTION$
|
||||
* BIN2L() es una de las funciones de conversión binaria, de bajo nivel.
|
||||
* Estas funciones convierten entre un valor numérico en Harbour y una
|
||||
* representación de cadena de un valor numérico dado.
|
||||
* BIN2L() toma cuatro bytes de un entero largo con signo codificado en
|
||||
* BIN2L() toma cuatro bytes de un entero largo con signo codificado en
|
||||
* 32 bits y los convierte en un valor numérico estándar de Harbour.
|
||||
*
|
||||
* Ud podría preguntarse cual es la necesidad de este tipo de funciones,
|
||||
* bueno, primero de todo esta permite leer/escribir información desde/
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* un archivo DBF), es tambien una forma útil de compartir información
|
||||
* desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
|
||||
* BIN2L() es la inversa de L2BIN()
|
||||
* BIN2L() es la inversa de L2BIN()
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
* // Muestra el número de registros en el DBF
|
||||
@@ -184,7 +187,7 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* BIN2L() funciona exactamente como la función de CA-Clipper, BIN2L()
|
||||
* BIN2L() funciona exactamente como la función de CA-Clipper, BIN2L()
|
||||
* $FILES$
|
||||
* La librería es rtl
|
||||
* $SEEALSO$
|
||||
@@ -199,29 +202,29 @@
|
||||
* $CATEGORY$
|
||||
* Conversión binaria
|
||||
* $ONELINER$
|
||||
* Convierte 4 bytes de un entero largo sin signo en un número en Harbour
|
||||
* Convierte 4 bytes de un entero largo sin signo en un número en Harbour
|
||||
* $SYNTAX$
|
||||
* BIN2U( <cBuffer> ) --> nNumero
|
||||
* $ARGUMENTS$
|
||||
* <cBuffer> es una cadena de caracteres que contiene un entero largo
|
||||
* sin signo codificado en 32 bits (byte menos significativo primero).
|
||||
* Los primeros cuatro bytes son tenidos en cuenta, si hay más son
|
||||
* ignorados.
|
||||
* sin signo codificado en 32 bits (byte menos significativo primero).
|
||||
* Los primeros cuatro bytes son tenidos en cuenta, si hay más son
|
||||
* ignorados.
|
||||
* $RETURNS$
|
||||
* BIN2U() retorna un número entero (ó cero si <cBuffer> no es una cadena).
|
||||
* BIN2U() retorna un número entero (ó cero si <cBuffer> no es una cadena).
|
||||
* $DESCRIPTION$
|
||||
* BIN2U() es una de las funciones de conversión binaria, de bajo nivel.
|
||||
* Estas funciones convierten entre un valor numérico en Harbour y una
|
||||
* representación de cadena de un valor numérico dado.
|
||||
* BIN2U() toma cuatro bytes de un entero largo sin signo codificado en
|
||||
* BIN2U() toma cuatro bytes de un entero largo sin signo codificado en
|
||||
* 32 bits y los convierte en un valor numérico estándar de Harbour.
|
||||
*
|
||||
* Ud podría preguntarse cual es la necesidad de este tipo de funciones,
|
||||
* bueno, primero de todo esta permite leer/escribir información desde/
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* un archivo DBF), es tambien una forma util de compartir información
|
||||
* desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
|
||||
* BIN2U() es la inversa de U2BIN()
|
||||
* BIN2U() es la inversa de U2BIN()
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
* // Muestra el número de registros en el DBF
|
||||
@@ -243,8 +246,8 @@
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* BIN2U() es una función de compatibilidad con XBase++ y no existe como
|
||||
* una función estándar en CA-Clipper 5.x
|
||||
* Esta función es solamente visible si el archivo source/rtl/binnum.c
|
||||
* una función estándar en CA-Clipper 5.x
|
||||
* Esta función es solamente visible si el archivo source/rtl/binnum.c
|
||||
* fue compilado con la bandera HB_COMPAT_XPP.
|
||||
* $FILES$
|
||||
* La librería es rtl
|
||||
@@ -260,29 +263,29 @@
|
||||
* $CATEGORY$
|
||||
* Conversión binaria
|
||||
* $ONELINER$
|
||||
* Convierte un número en Harbour en 2 bytes de un entero corto con signo en
|
||||
* Convierte un número en Harbour en 2 bytes de un entero corto con signo en
|
||||
* $SYNTAX$
|
||||
* I2BIN( <nNumero> ) --> cBuffer
|
||||
* $ARGUMENTS$
|
||||
* <nNumero> es un valor numérico a convertir (los digitos decimales
|
||||
* <nNumero> es un valor numérico a convertir (los digitos decimales
|
||||
* son ignorados).
|
||||
* $RETURNS$
|
||||
* I2BIN() retorna una cadena de caracteres de dos bytes que
|
||||
* contienen un entero corto con signo, codificado en 16 bits (byte
|
||||
* menos significativo primero).
|
||||
* I2BIN() retorna una cadena de caracteres de dos bytes que
|
||||
* contienen un entero corto con signo, codificado en 16 bits (byte
|
||||
* menos significativo primero).
|
||||
* $DESCRIPTION$
|
||||
* I2BIN() es una de las funciones de conversión binaria, de bajo nivel.
|
||||
* Estas funciones convierten entre un valor numérico en Harbour y una
|
||||
* representación de cadena de un valor numérico dado.
|
||||
* I2BIN() toma un valor numérico y lo convierte en dos bytes de
|
||||
* I2BIN() toma un valor numérico y lo convierte en dos bytes de
|
||||
* un entero corto con signo, codificado en 16 bits.
|
||||
*
|
||||
* Ud podría preguntarse cual es la necesidad de este tipo de funciones,
|
||||
* bueno, primero de todo esta permite leer/escribir información desde/
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* un archivo DBF), es tambien una forma util de compartir información
|
||||
* desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
|
||||
* I2BIN() es la inversa de BIN2I()
|
||||
* I2BIN() es la inversa de BIN2I()
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
* // El ejemplo cambia la "fecha de ultima actualización" del DBF
|
||||
@@ -315,7 +318,7 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* I2BIN() funciona exactamente como la función de CA-Clipper, I2BIN()
|
||||
* I2BIN() funciona exactamente como la función de CA-Clipper, I2BIN()
|
||||
* $FILES$
|
||||
* La librería es rtl
|
||||
* $SEEALSO$
|
||||
@@ -330,35 +333,35 @@
|
||||
* $CATEGORY$
|
||||
* Conversión binaria
|
||||
* $ONELINER$
|
||||
* Convierte un número en Harbour en 2 bytes de un entero corto sin signo en
|
||||
* Convierte un número en Harbour en 2 bytes de un entero corto sin signo en
|
||||
* $SYNTAX$
|
||||
* W2BIN( <nNumero> ) --> cBuffer
|
||||
* $ARGUMENTS$
|
||||
* <nNumero> es un valor numérico a convertir (los digitos decimales
|
||||
* <nNumero> es un valor numérico a convertir (los digitos decimales
|
||||
* son ignorados).
|
||||
* $RETURNS$
|
||||
* W2BIN() retorna una cadena de caracteres de dos bytes que
|
||||
* contienen un entero corto sin signo, codificado en 16 bits (byte
|
||||
* menos significativo primero).
|
||||
* W2BIN() retorna una cadena de caracteres de dos bytes que
|
||||
* contienen un entero corto sin signo, codificado en 16 bits (byte
|
||||
* menos significativo primero).
|
||||
* $DESCRIPTION$
|
||||
* W2BIN() es una de las funciones de conversión binaria, de bajo nivel.
|
||||
* Estas funciones convierten entre un valor numérico en Harbour y una
|
||||
* representación de cadena de un valor numérico dado.
|
||||
* W2BIN() toma un valor numérico y lo convierte en dos bytes de
|
||||
* W2BIN() toma un valor numérico y lo convierte en dos bytes de
|
||||
* un entero corto sin signo, codificado en 16 bits.
|
||||
*
|
||||
* Ud podría preguntarse cual es la necesidad de este tipo de funciones,
|
||||
* bueno, primero de todo esta permite leer/escribir información desde/
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* un archivo DBF), es tambien una forma util de compartir información
|
||||
* desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
|
||||
* W2BIN() es la inversa de BIN2W()
|
||||
* W2BIN() es la inversa de BIN2W()
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* W2BIN() es una función de compatibilidad con XBase++ y no existe como
|
||||
* una función estandar en CA-Clipper 5.x
|
||||
* Esta función es solamente visible si el archivo source/rtl/binnum.c
|
||||
* una función estandar en CA-Clipper 5.x
|
||||
* Esta función es solamente visible si el archivo source/rtl/binnum.c
|
||||
* fue compilado con la bandera HB_COMPAT_XPP.
|
||||
* $FILES$
|
||||
* La librería es rtl
|
||||
@@ -374,33 +377,33 @@
|
||||
* $CATEGORY$
|
||||
* Conversión binaria
|
||||
* $ONELINER$
|
||||
* Convierte un número en Harbour en 4 bytes de un entero largo con signo en
|
||||
* Convierte un número en Harbour en 4 bytes de un entero largo con signo en
|
||||
* $SYNTAX$
|
||||
* L2BIN( <nNumero> ) --> cBuffer
|
||||
* $ARGUMENTS$
|
||||
* <nNumero> es un valor numérico a convertir (los digitos decimales
|
||||
* <nNumero> es un valor numérico a convertir (los digitos decimales
|
||||
* son ignorados).
|
||||
* $RETURNS$
|
||||
* L2BIN() retorna una cadena de caracteres de cuatro bytes que
|
||||
* contienen un entero largo con signo, codificado en 32 bits (byte
|
||||
* menos significativo primero).
|
||||
* L2BIN() retorna una cadena de caracteres de cuatro bytes que
|
||||
* contienen un entero largo con signo, codificado en 32 bits (byte
|
||||
* menos significativo primero).
|
||||
* $DESCRIPTION$
|
||||
* L2BIN() es una de las funciones de conversión binaria, de bajo nivel.
|
||||
* Estas funciones convierten entre un valor numérico en Harbour y una
|
||||
* representación de cadena de un valor numérico dado.
|
||||
* L2BIN() toma un valor numérico y lo convierte en cuatro bytes de
|
||||
* L2BIN() toma un valor numérico y lo convierte en cuatro bytes de
|
||||
* un entero largo con signo, codificado en 32 bits.
|
||||
*
|
||||
* Ud podría preguntarse cual es la necesidad de este tipo de funciones,
|
||||
* bueno, primero de todo esta permite leer/escribir información desde/
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* un archivo DBF), es tambien una forma útil de compartir información
|
||||
* desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
|
||||
* L2BIN() es la inversa de BIN2L()
|
||||
* L2BIN() es la inversa de BIN2L()
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* L2BIN() funciona exactamente como la función de CA-Clipper, L2BIN()
|
||||
* L2BIN() funciona exactamente como la función de CA-Clipper, L2BIN()
|
||||
* $FILES$
|
||||
* La librería es rtl
|
||||
* $SEEALSO$
|
||||
@@ -415,35 +418,35 @@
|
||||
* $CATEGORY$
|
||||
* Conversión binaria
|
||||
* $ONELINER$
|
||||
* Convierte un número en Harbour en 4 bytes de un entero largo sin signo en
|
||||
* Convierte un número en Harbour en 4 bytes de un entero largo sin signo en
|
||||
* $SYNTAX$
|
||||
* U2BIN( <nNumero> ) --> cBuffer
|
||||
* $ARGUMENTS$
|
||||
* <nNumero> es un valor numérico a convertir (los digitos decimales
|
||||
* <nNumero> es un valor numérico a convertir (los digitos decimales
|
||||
* son ignorados).
|
||||
* $RETURNS$
|
||||
* U2BIN() retorna una cadena de caracteres de cuatro bytes que
|
||||
* contienen un entero largo sin signo, codificado en 32 bits (byte
|
||||
* menos significativo primero).
|
||||
* U2BIN() retorna una cadena de caracteres de cuatro bytes que
|
||||
* contienen un entero largo sin signo, codificado en 32 bits (byte
|
||||
* menos significativo primero).
|
||||
* $DESCRIPTION$
|
||||
* U2BIN() es una de las funciones de conversión binaria, de bajo nivel.
|
||||
* Estas funciones convierten entre un valor numérico en Harbour y una
|
||||
* representación de cadena de un valor numérico dado.
|
||||
* U2BIN() toma un valor numérico y lo convierte en cuatro bytes de
|
||||
* U2BIN() toma un valor numérico y lo convierte en cuatro bytes de
|
||||
* un entero largo sin signo, codificado en 32 bits.
|
||||
*
|
||||
* Ud podría preguntarse cual es la necesidad de este tipo de funciones,
|
||||
* bueno, primero de todo esta permite leer/escribir información desde/
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* hacia un archivo binario (como extraer información de la cabecera de
|
||||
* un archivo DBF), es tambien una forma útil de compartir información
|
||||
* desde otra fuente distinta a Harbour (lenguaje C por ejemplo).
|
||||
* U2BIN() es la inversa de BIN2U()
|
||||
* U2BIN() es la inversa de BIN2U()
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* U2BIN() es una función de compatibilidad con XBase++ y no existe como
|
||||
* una función estándar en CA-Clipper 5.x
|
||||
* Esta función es solamente visible si el archivo source/rtl/binnum.c
|
||||
* una función estándar en CA-Clipper 5.x
|
||||
* Esta función es solamente visible si el archivo source/rtl/binnum.c
|
||||
* fue compilado con la bandera HB_COMPAT_XPP.
|
||||
* $FILES$
|
||||
* La librería es rtl
|
||||
@@ -465,7 +468,7 @@
|
||||
* $ARGUMENTS$
|
||||
* <nDoble> es un valor numérico de doble precisión.
|
||||
* $RETURNS$
|
||||
* WORD() retorna un entero en el rango: -32767 a +32767
|
||||
* WORD() retorna un entero en el rango: -32767 a +32767
|
||||
* $DESCRIPTION$
|
||||
* Esta función convierte valores de doble precisión a enteros, para
|
||||
* ser usados con el mandato CALL.
|
||||
@@ -473,7 +476,7 @@
|
||||
<fixed>
|
||||
* // Utiliza WORD() como argumento del mandato CALL
|
||||
* CALL INVENT WITH WORD(75300)
|
||||
*
|
||||
*
|
||||
</fixed>
|
||||
* $STATUS$
|
||||
* R
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
@@ -27,32 +30,32 @@
|
||||
* [<xSeparadorCabecera>], [<xSeparadorColumna>], ;
|
||||
* [<xSeparadorPie>], [<xPieColumna>] ) --> lExito
|
||||
* $ARGUMENTS$
|
||||
* <nSup> coordenada para la fila Superior de visualización. El rango
|
||||
* para <nSup> va de cero a MAXROW(), por defecto es cero.
|
||||
* <nSup> coordenada para la fila Superior de visualización. El rango
|
||||
* para <nSup> va de cero a MAXROW(), por defecto es cero.
|
||||
*
|
||||
* <nIzq> coordenada para la columna izquierda de visualización. El rango
|
||||
* <nIzq> coordenada para la columna izquierda de visualización. El rango
|
||||
* para <nIzq> va de cero a MAXCOL(), por defecto es cero.
|
||||
*
|
||||
* <nInf> coordenada para la fila inferior de visualización. El rango
|
||||
* para <nInf> va de cero a MAXROW(), por defecto es MAXROW().
|
||||
* <nInf> coordenada para la fila inferior de visualización. El rango
|
||||
* para <nInf> va de cero a MAXROW(), por defecto es MAXROW().
|
||||
*
|
||||
* <nDer> coordenada para la columna derecha de visualización. El rango
|
||||
* para <nDer> va de cero a MAXCOL(), por defecto es MAXCOL().
|
||||
* <nDer> coordenada para la columna derecha de visualización. El rango
|
||||
* para <nDer> va de cero a MAXCOL(), por defecto es MAXCOL().
|
||||
*
|
||||
* <acColumnas> es un array de expresiones de caracteres que contienen
|
||||
* <acColumnas> es un array de expresiones de caracteres que contienen
|
||||
* los nombres de los campos de la base de datos,o expresiones para la
|
||||
* visualización en cada columna.
|
||||
* Si no es especificada, por defecto es la visualización de todos los
|
||||
* Si no es especificada, por defecto es la visualización de todos los
|
||||
* campos de la base de datos en el area de trabajo actual.
|
||||
*
|
||||
* <xFuncionUsuario> es el nombre de una función ó un bloque de codigo
|
||||
* que podría ser llamado cada vez que una tecla no reconocida ha sido
|
||||
* que podría ser llamado cada vez que una tecla no reconocida ha sido
|
||||
* presionada ó cuando no hay más teclas para ser procesadas y DBEDIT()
|
||||
* va al modo inactivo. Si <xFuncionUsuario> es una cadena de caracteres,
|
||||
* esta debe contener el nombre de una función de usuario definida, que
|
||||
* sea válida y sin paréntesis.
|
||||
* Ambos la función definida por el usuario ó el bloque de código deberán
|
||||
* aceptar dos parámetros: nModo y nActualColumna.
|
||||
* aceptar dos parámetros: nModo y nActualColumna.
|
||||
* Ambos deberían devolver un valor numérico que corresponda a uno de
|
||||
* los códigos de retorno esperados.
|
||||
* (Vea la tabla más abajo con la lista de nModo y los códigos de retorno)
|
||||
@@ -62,7 +65,7 @@
|
||||
* pueden usar el mismo valor como cadena de molde (picture).
|
||||
* Si <xColumnSayPictures> es un array, cada elemento debe ser una cadena
|
||||
* de caracteres que corresponde a la cadena (picture) usada de molde
|
||||
* para la columna con el mismo índice. Vea la ayuda para @...SAY para
|
||||
* para la columna con el mismo índice. Vea la ayuda para @...SAY para
|
||||
* tener más información acreca de los valores de molde (picture).
|
||||
*
|
||||
* <xCabeceraColumna> contiene los titulos de cabecera para cada columna
|
||||
@@ -71,14 +74,14 @@
|
||||
* de caracteres que contienen el titulo de cabecera para cada campo.
|
||||
* La cabecera puede ser dividido en más de una linea al poner un punto
|
||||
* y coma (;) en los lugares donde Ud. desea romper la linea.
|
||||
* Si es omitida el valor por defecto para cada cabecera de columna es
|
||||
* Si es omitida el valor por defecto para cada cabecera de columna es
|
||||
* tomado de <acColumnas> ó el nombre del campo de la base de datos, si
|
||||
* <acColumnas> no fue especificado
|
||||
*
|
||||
* <xSeparadorCabecera> es un array que contiene caracteres que dibujan
|
||||
* las lineas que separan las cabeceras y los datos de los campos .
|
||||
* En lugar de un array Ud. puede usar una cadena de caracteres que
|
||||
* podría ser usada para la visualización de la misma linea para todos
|
||||
* En lugar de un array Ud. puede usar una cadena de caracteres que
|
||||
* podría ser usada para la visualización de la misma linea para todos
|
||||
* los campos.
|
||||
* El valor por defecto es una linea doble.
|
||||
*
|
||||
@@ -90,8 +93,8 @@
|
||||
*
|
||||
* <xSeparadorPie> es un array que contiene caracteres que dibujan
|
||||
* las lineas que separan el area de datos de los campos y el pie.
|
||||
* En lugar de un array Ud. puede usar una cadena de caracteres que
|
||||
* podría ser usada para la visualización de la misma linea para todos
|
||||
* En lugar de un array Ud. puede usar una cadena de caracteres que
|
||||
* podría ser usada para la visualización de la misma linea para todos
|
||||
* los campos. El valor por defecto es ningún separador de pie.
|
||||
*
|
||||
* <xPieColumna> contiene el pie para ser visualizado al final de
|
||||
@@ -99,12 +102,12 @@
|
||||
* tendran el mismo pie, si este es un array, cada elemento es una cadena
|
||||
* de caracteres que contienen el pie para cada campo. El pie puede ser
|
||||
* dividido en más de una linea al poner un punto y coma (;) en los
|
||||
* lugares donde Ud. desea romper la linea. Si es omitido ningun pie es
|
||||
* lugares donde Ud. desea romper la linea. Si es omitido ningun pie es
|
||||
* visualizado.
|
||||
* $RETURNS$
|
||||
* DBEDIT() retorna .F. si no hay una base de datos abierta en ese area
|
||||
* de trabajo, ó si el número de columnas para la visualización es cero,
|
||||
* en caso contrario DBEDIT() devuelve .T.
|
||||
* en caso contrario DBEDIT() devuelve .T.
|
||||
* $DESCRIPTION$
|
||||
* DBEDIT() visualiza y permite editar registros de una ó más areas de
|
||||
* trabajo en una grilla en pantalla. Cada columna es definida por los
|
||||
@@ -112,7 +115,7 @@
|
||||
* Cada fila es el equivalente de un registro de la base de datos.
|
||||
*
|
||||
* A Continuación estan las teclas manejadas por DBEDIT(): </par>
|
||||
* -------------------------------------------------------
|
||||
* -------------------------------------------------------
|
||||
* <table>
|
||||
* Tecla Significado
|
||||
*
|
||||
@@ -141,23 +144,23 @@
|
||||
* </table>
|
||||
* Cuando DBEDIT() ejecuta <xFuncionUsuario> le pasa los siguientes
|
||||
* argumentos:
|
||||
* nModo y el índice del registro actual en <acColumnas>.
|
||||
* Si <acColumnas> es omitido, el número de índice es número de FIELD()
|
||||
* nModo y el índice del registro actual en <acColumnas>.
|
||||
* Si <acColumnas> es omitido, el número de índice es número de FIELD()
|
||||
* de la estructura de la base de datos abierta.
|
||||
*
|
||||
*
|
||||
* Valores de los Modos en DBEDIT() : </par>
|
||||
* ---------------------------------
|
||||
* ---------------------------------
|
||||
* <table>
|
||||
* Dbedit.ch Valor Significado
|
||||
*
|
||||
* DE_IDLE 0 DBEDIT() esta inactivo, todas la teclas de
|
||||
* DE_IDLE 0 DBEDIT() esta inactivo, todas la teclas de
|
||||
* movimiento han sido procesadas.
|
||||
* DE_HITTOP 1 Intento de mover el cursor más alla de la parte
|
||||
* superior del archivo
|
||||
* DE_HITBOTTOM 2 Intento de mover el cursor despues del final
|
||||
* DE_HITBOTTOM 2 Intento de mover el cursor despues del final
|
||||
* del archivo.
|
||||
* DE_EMPTY 3 No hay registros en el area de trabajo, la base
|
||||
* DE_EMPTY 3 No hay registros en el area de trabajo, la base
|
||||
* de datos está vacia.
|
||||
* DE_EXCEPT 4 Interrupción de teclado
|
||||
* </table>
|
||||
@@ -172,22 +175,22 @@
|
||||
*
|
||||
* DE_ABORT 0 Aborta DBEDIT().
|
||||
* DE_CONT 1 Continua DBEDIT() como ahora.
|
||||
* DE_REFRESH 2 Fueza relectura/revisualización en pantalla de
|
||||
* DE_REFRESH 2 Fueza relectura/revisualización en pantalla de
|
||||
* todas las filas de datos
|
||||
* </table>
|
||||
*
|
||||
* La función del usuario es llamada una vez en cada uno de los
|
||||
* La función del usuario es llamada una vez en cada uno de los
|
||||
* siguientes casos:
|
||||
* - La base de datos esta vacía.
|
||||
* - El usuario trata de mover más alla de la parte superior ó de la
|
||||
* - El usuario trata de mover más alla de la parte superior ó de la
|
||||
* parte inferior del archivo.
|
||||
* - Interrupción de teclado, el usuario ha presionado una tecla que no
|
||||
* puede ser manejada por DBEDIT().
|
||||
* - Interrupción de teclado, el usuario ha presionado una tecla que no
|
||||
* puede ser manejada por DBEDIT().
|
||||
* - El buffer de teclado esta vacío ó un refresco de pantalla acaba
|
||||
* de ocurrir.
|
||||
*
|
||||
* Nota Importante:
|
||||
* ---------------
|
||||
* ---------------
|
||||
* DBEDIT() es una función de compatibilidad, esta fué superada por la
|
||||
* clase TBrowse y no es recomendada para nuevas aplicaciones.
|
||||
* $EXAMPLES$
|
||||
@@ -199,9 +202,9 @@
|
||||
* $STATUS$
|
||||
* S
|
||||
* $COMPLIANCE$
|
||||
* <xFuncionUsuario> puede ser también un bloque de código, esta es una
|
||||
* <xFuncionUsuario> puede ser también un bloque de código, esta es una
|
||||
* extensión de Harbour.
|
||||
*
|
||||
*
|
||||
* CA-Clipper lanzará un error si no hay una base de datos abierta
|
||||
* Harbour puede retornar .F.
|
||||
*
|
||||
@@ -210,14 +213,14 @@
|
||||
* Las NG de CA-Clipper 5.2 indican que el valor devuelto es NIL,
|
||||
* esto es erróneo y debería ser un valor lógico.
|
||||
*
|
||||
* Hay un código de retorno (3) indocumentado para las funciones
|
||||
* definidas por el usuario en Clipper (ambos 87 and 5.x). este es un
|
||||
* Hay un código de retorno (3) indocumentado para las funciones
|
||||
* definidas por el usuario en Clipper (ambos 87 and 5.x). este es un
|
||||
* Modo de agregado (Append) el cual:
|
||||
* "Divide la pantalla para permitir más que datos sean agregados en el
|
||||
* "Divide la pantalla para permitir más que datos sean agregados en el
|
||||
* area de la ventana".
|
||||
* Este modo no es soportado por Harbour.
|
||||
* Este modo no es soportado por Harbour.
|
||||
* $FILES$
|
||||
* Los archivos de cabecera son dbedit.ch, inkey.ch
|
||||
* Los archivos de cabecera son dbedit.ch, inkey.ch
|
||||
* La librería es rtl
|
||||
* $SEEALSO$
|
||||
* @...SAY,BROWSE(),TBrowse class,TRANSFORM()
|
||||
@@ -237,17 +240,17 @@
|
||||
* $ARGUMENTS$
|
||||
* <nSup> coordenada de la fila Superior de visualización.
|
||||
*
|
||||
* <nIzq> coordenada de la columna izquierda de visualización.
|
||||
* <nIzq> coordenada de la columna izquierda de visualización.
|
||||
*
|
||||
* <nInf> coordenada de la fila inferior de visualización.
|
||||
* <nInf> coordenada de la fila inferior de visualización.
|
||||
*
|
||||
* <nDer> coordenada de la columna derecha de visualización.
|
||||
* <nDer> coordenada de la columna derecha de visualización.
|
||||
* $RETURNS$
|
||||
* BROWSE() retorna .F. si no hay una base de datos abierta en ese area
|
||||
* de trabajo, en caso contrario devuelve .T.
|
||||
* de trabajo, en caso contrario devuelve .T.
|
||||
* $DESCRIPTION$
|
||||
* BROWSE() es un visualizador de bases de datos de propósito general,
|
||||
* sin demasiado trabajo ud. puede desplegar un archivo DBF con las
|
||||
* sin demasiado trabajo ud. puede desplegar un archivo DBF con las
|
||||
* siguientes teclas:
|
||||
|
||||
* <table>
|
||||
@@ -275,7 +278,7 @@
|
||||
*
|
||||
* <table>
|
||||
* Registro ###/### Número registro actual / Número Total de registros.
|
||||
* <none> No hay registros, el archivo esta vacio.
|
||||
* <none> No hay registros, el archivo esta vacio.
|
||||
* <new> Ud.esta en modo de Agregado al final del archivo.
|
||||
* <Deleted> El registro actual esta borrado.
|
||||
* <bof> Ud. esta en el comienzo del archivo.
|
||||
@@ -283,7 +286,7 @@
|
||||
*
|
||||
* Ud. debería pasar las cuatro coordenadas validas, si menos de cuatro
|
||||
* parámetros son pasados al BROWSE() las coordenadas por defecto son:
|
||||
* 1, 0, MAXROW(), MAXCOL().
|
||||
* 1, 0, MAXROW(), MAXCOL().
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
* // muestra como desplegar una base de datos
|
||||
@@ -310,16 +313,16 @@
|
||||
* $SYNTAX$
|
||||
* TBrowseDB( [<nSup>], [<nIzq>], [<nInf>], [<nDer>] ) --> oBrowse
|
||||
* $ARGUMENTS$
|
||||
* <nSup> coordenada de la fila superior de visualización.
|
||||
* <nSup> coordenada de la fila superior de visualización.
|
||||
*
|
||||
* <nIzq> coordenada de la columna izquierda de visualización.
|
||||
* <nIzq> coordenada de la columna izquierda de visualización.
|
||||
*
|
||||
* <nInf> coordenada de la fila inferior de visualización.
|
||||
* <nInf> coordenada de la fila inferior de visualización.
|
||||
*
|
||||
* <nDer> coordenada de la columna derecha de visualización.
|
||||
* <nDer> coordenada de la columna derecha de visualización.
|
||||
* $RETURNS$
|
||||
* TBrowseDB() retorna un nuevo objeto TBrowse con unas coordenadas
|
||||
* específicas y un :SkipBlock, :GoTopBlock y :GoBottomBlock por defecto
|
||||
* específicas y un :SkipBlock, :GoTopBlock y :GoBottomBlock por defecto
|
||||
* para desplegar una base de datos.
|
||||
* $DESCRIPTION$
|
||||
* TBrowseDB() es una forma rápida de crear un objeto TBrowse junto con
|
||||
@@ -327,14 +330,14 @@
|
||||
* Note que el objeto TBrowse devuelto no contiene objetos TBColumn y Ud.
|
||||
* necesita agregar una columna para cada campo por Ud. mismo
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
<fixed>
|
||||
* Para un buen ejemplo, mire en el código fuente de la función BROWSE()
|
||||
* en el subdirectorio ../source/rtl/browse.prg
|
||||
</fixed>
|
||||
</fixed>
|
||||
* $STATUS$
|
||||
* S
|
||||
* S
|
||||
* $COMPLIANCE$
|
||||
* TBrowseDB() funciona exactamente como la función de CA-Clipper TBrowseDB().
|
||||
* TBrowseDB() funciona exactamente como la función de CA-Clipper TBrowseDB().
|
||||
* $FILES$
|
||||
* La librería es rtl
|
||||
* $SEEALSO$
|
||||
@@ -355,13 +358,13 @@
|
||||
* $ARGUMENTS$
|
||||
* <nRecs> es el número de registros a saltar relativos al registro actual.
|
||||
* Números positivos tratan de mover el puntero de registro hacia adelante
|
||||
* y Números negativos tratan de mover el puntero de registro hacia atras
|
||||
* y Números negativos tratan de mover el puntero de registro hacia atras
|
||||
* <nRecs> registros.
|
||||
* $RETURNS$
|
||||
* dbSkipper() retorna el número actual de registros saltados.
|
||||
* $DESCRIPTION$
|
||||
* dbSkipper() es una función de ayuda usada en el mecanismo de despliegue
|
||||
* para saltar un número de registros mientras le da al llamador una
|
||||
* para saltar un número de registros mientras le da al llamador una
|
||||
* indicación del número actual de registros saltados.
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
@@ -377,8 +380,8 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* dbSkipper() es una función de compatibilidad con XBase++ y no existe
|
||||
* como una función estándar en CA-Clipper 5.x
|
||||
* dbSkipper() es una función de compatibilidad con XBase++ y no existe
|
||||
* como una función estándar en CA-Clipper 5.x
|
||||
* Esta función es solamente visible si el archivo:
|
||||
* ../source/rtl/browdb.prg fue compilado con la bandera HB_COMPAT_XPP.
|
||||
* $FILES$
|
||||
@@ -387,4 +390,3 @@
|
||||
* DBSKIP(),SKIP
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
* www - http://www.harbour-project.org
|
||||
@@ -31,16 +35,16 @@
|
||||
* CLASS crea una clase desde la cual se pueden crear objetos.
|
||||
* Cada clase es definida en un archivo.PRG separado para este propósito
|
||||
* No se puede crear más de una clase en un archivo.PRG
|
||||
* Después del mandato CLASS comienza la definición, luego los elementos
|
||||
* DATA (tambien conocidos como variables de instancia) y luego
|
||||
* los METHODS de la clase (el equivalente a las funciones en la
|
||||
* Después del mandato CLASS comienza la definición, luego los elementos
|
||||
* DATA (tambien conocidos como variables de instancia) y luego
|
||||
* los METHODS de la clase (el equivalente a las funciones en la
|
||||
* programación tradicional)
|
||||
*
|
||||
* Las Clases pueden heredar desde una clase sola <SuperClass>, pero la
|
||||
* Las Clases pueden heredar desde una clase sola <SuperClass>, pero la
|
||||
* cadena de herencia puede extenderse a muchos niveles
|
||||
*
|
||||
* Un program usa una clase llamando al Constructor de la clase, el
|
||||
* método New() para crear el objeto. Ese objeto es usualmente asignado
|
||||
* método New() para crear el objeto. Ese objeto es usualmente asignado
|
||||
* a una variable, la cual es usada para acceder a los elementos DATA y
|
||||
* a los métodos
|
||||
* $EXAMPLES$
|
||||
@@ -51,9 +55,9 @@
|
||||
* DATA Cargo // Variable definida por el usuario
|
||||
* DATA ColorBlock // Codeblock que determina el color de los items
|
||||
* DATA ColSep // Caracter separador de la Columna
|
||||
* DATA DefColor // Array de índices numéricos a la tabla de color
|
||||
* DATA DefColor // Array de índices numéricos a la tabla de color
|
||||
* DATA Footing // Pie de Columna
|
||||
* DATA FootSep // Caracter separador del Pie
|
||||
* DATA FootSep // Caracter separador del Pie
|
||||
* DATA Heading // Encabezado de la Columna
|
||||
* DATA HeadSep // Caracter separador de la cabecera
|
||||
* DATA Width // Ancho de la Columna
|
||||
@@ -66,7 +70,7 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* CLASS es una extensión de Harbour.
|
||||
* CLASS es una extensión de Harbour.
|
||||
* $PLATFORMS$
|
||||
* Todas
|
||||
* $SEEALSO$
|
||||
@@ -85,27 +89,27 @@
|
||||
* $SYNTAX$
|
||||
* DATA <NombreDato1> [,<NombreDatoN>] [ AS <tipo> ] [ INIT <uValor> ]
|
||||
* $ARGUMENTS$
|
||||
* <NombreDato1> Nombre de DATA
|
||||
* <NombreDato1> Nombre de DATA
|
||||
*
|
||||
* <tipo> Especificación Opcional del tipo de datos, de uno de
|
||||
* <tipo> Especificación Opcional del tipo de datos, de uno de
|
||||
* los siguientes (especificación en inglés):
|
||||
* Character, Numeric, Date, Logical, Codeblock, Nil
|
||||
* Character, Numeric, Date, Logical, Codeblock, Nil
|
||||
*
|
||||
* <uValor> Valor opcional inicial cuando se crea un nuevo objeto
|
||||
* $DESCRIPTION$
|
||||
* Los elementos DATA tambien pueden ser pensados como "propiedades"
|
||||
* ó "atributos" de un objeto. ellos pueden ser de cualquier tipo
|
||||
* ó "atributos" de un objeto. ellos pueden ser de cualquier tipo
|
||||
* incluyendo bloques de codigo.
|
||||
* Una vez que el objeto ha sido creado, los elementos DATA son referen-
|
||||
* ciados con dos puntos (:) como en MyObject:Heading := "Nombre".
|
||||
* Usualmente una clase también define métodos para manipular los DATA.
|
||||
* Usualmente una clase también define métodos para manipular los DATA.
|
||||
*
|
||||
* Se puede usar la clausula "AS <type>" para reforzar que DATA es
|
||||
* Se puede usar la clausula "AS <type>" para reforzar que DATA es
|
||||
* perteneciente a un cierto tipo. De otra manera este tomará el tipo
|
||||
* de cualquier valor que le sea asignado.
|
||||
*
|
||||
* Use la clausula "INIT <uValue>" para inicializar ese DATA a <uValue>
|
||||
* siempre que un nuevo objeto es creado.
|
||||
* siempre que un nuevo objeto es creado.
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
* CLASS TBColumn
|
||||
@@ -114,9 +118,9 @@
|
||||
* DATA Cargo // Variable definida por el usuario
|
||||
* DATA ColorBlock // Codeblock que determina el color de los items
|
||||
* DATA ColSep // Caracter separador de la Columna
|
||||
* DATA DefColor // Array de índices numéricos a la tabla de color
|
||||
* DATA DefColor // Array de índices numéricos a la tabla de color
|
||||
* DATA Footing // Pie de Columna
|
||||
* DATA FootSep // Caracter separador del Pie
|
||||
* DATA FootSep // Caracter separador del Pie
|
||||
* DATA Heading // Encabezado de la Columna
|
||||
* DATA HeadSep // Caracter separador de la cabecera
|
||||
* DATA Width // Ancho de la Columna
|
||||
@@ -129,7 +133,7 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* DATA es una extensión de Harbour.
|
||||
* DATA es una extensión de Harbour.
|
||||
* $PLATFORMS$
|
||||
* Todas
|
||||
* $SEEALSO$
|
||||
@@ -146,28 +150,28 @@
|
||||
* $ONELINER$
|
||||
* Define una variable CLASSDATA para una clase (NO para un Objeto !)
|
||||
* $SYNTAX$
|
||||
* CLASSDATA <DataName1> [,<DataNameN>] [ AS <type> ] [ INIT <uValue> ]
|
||||
* CLASSDATA <DataName1> [,<DataNameN>] [ AS <type> ] [ INIT <uValue> ]
|
||||
* $ARGUMENTS$
|
||||
* <NombreDato1> Nombre de DATA
|
||||
* <NombreDato1> Nombre de DATA
|
||||
*
|
||||
* <tipo> Especificación opcional del tipo de datos de uno de
|
||||
* <tipo> Especificación opcional del tipo de datos de uno de
|
||||
* los siguientes (Original en inglés):
|
||||
* Character, Numeric, Date, Logical, Codeblock, Nil
|
||||
* Character, Numeric, Date, Logical, Codeblock, Nil
|
||||
*
|
||||
* <uValor> Valor opcional inicial cuando se inicia el programa
|
||||
* $DESCRIPTION$
|
||||
* Las variables CLASSDATA pueden se pensadas como "propiedades" de un
|
||||
* Las variables CLASSDATA pueden se pensadas como "propiedades" de un
|
||||
* clase entera. Cada CLASSDATA existe sólo una vez, no importa cuántos
|
||||
* objetos sean creados. Un uso comun es para un contador que es
|
||||
* objetos sean creados. Un uso comun es para un contador que es
|
||||
* incrementado siempre que un objeto es creado y decrementado cuando
|
||||
* alguno es destruido, así se puede monitorear el número de objetos en
|
||||
* alguno es destruido, así se puede monitorear el número de objetos en
|
||||
* existencia para esta clase.
|
||||
*
|
||||
* Se puede usar la clausula "AS <type>" para reforzar que CLASSDATA es
|
||||
* Se puede usar la clausula "AS <type>" para reforzar que CLASSDATA es
|
||||
* perteneciente a un cierto tipo. De otra manera este tomará el tipo
|
||||
* de cualquier valor que le sea asignado.
|
||||
* Use la clausula "INIT <uValue>" para inicializar ese DATA a <uValue>
|
||||
* siempre que un nuevo objeto es creado.
|
||||
* siempre que un nuevo objeto es creado.
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
* CLASS TWindow
|
||||
@@ -178,9 +182,9 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* CLASSDATA es una extensión de Harbour.
|
||||
* CLASSDATA es una extensión de Harbour.
|
||||
* $PLATFORMS$
|
||||
* Todas
|
||||
* Todas
|
||||
* $SEEALSO$
|
||||
* Programación Orientada a Objeto,CLASS,METHOD,DATA
|
||||
* $END$
|
||||
@@ -206,37 +210,37 @@
|
||||
* $ARGUMENTS$
|
||||
* <NombreMétodo> Nombre del método a definir
|
||||
*
|
||||
* <params,...> Lista opcional de parametros
|
||||
* <params,...> Lista opcional de parametros
|
||||
* $DESCRIPTION$
|
||||
* Los Métodos son "funciones de clase" y hacen el trabajo de la clase.
|
||||
* Todos los métodos pueden ser definidos en la cabecera entre los
|
||||
* Todos los métodos pueden ser definidos en la cabecera entre los
|
||||
* comandos CLASS y ENDCLASS. Si el cuerpo de un método no esta totalmente
|
||||
* definido aqui, el cuerpo completo es escrito debajo del comando
|
||||
* definido aqui, el cuerpo completo es escrito debajo del comando
|
||||
* ENDCLASS usando esta sintaxis:
|
||||
*
|
||||
* METHOD <NombreMétodo>( [<params,...>] ) CLASS <NombreClase>
|
||||
* METHOD <NombreMétodo>( [<params,...>] ) CLASS <NombreClase>
|
||||
*
|
||||
* Los Métodos pueden referenciar al objeto actual usando la palabra
|
||||
* clave "Self:" ó su versión más corta "::"
|
||||
*
|
||||
* CLAUSULAS:
|
||||
*
|
||||
* CONSTRUCTOR Define un método especial de la clase: el método
|
||||
* Constructor, usado para crear objetos. Este es
|
||||
* usualmente el método New().
|
||||
* CLAUSULAS:
|
||||
*
|
||||
* CONSTRUCTOR Define un método especial de la clase: el método
|
||||
* Constructor, usado para crear objetos. Este es
|
||||
* usualmente el método New().
|
||||
* Los constructores siempre retornan el objeto New().
|
||||
*
|
||||
* INLINE Rápido y fácil de codificar, INLINE le permite definir
|
||||
* el código para el método inmediatamente después de la
|
||||
* definición de la clase. Cualquier método no declarado
|
||||
* INLINE ó BLOCK debe ser completamente definido después
|
||||
* INLINE Rápido y fácil de codificar, INLINE le permite definir
|
||||
* el código para el método inmediatamente después de la
|
||||
* definición de la clase. Cualquier método no declarado
|
||||
* INLINE ó BLOCK debe ser completamente definido después
|
||||
* del comando ENDCLASS.
|
||||
* El <Codigo,...> siguiente a INLINE recibe un parametro
|
||||
* de Self. Si se necesita recibir más parámetros, use
|
||||
* la cláusula BLOCK en su lugar.
|
||||
*
|
||||
* BLOCK Use esta cláusula cuando desee declarar rápidos métodos
|
||||
* 'inline' que necesiten parámetros. El primer parámetro
|
||||
* 'inline' que necesiten parámetros. El primer parámetro
|
||||
* a <CodeBlock> debe ser Self, como en:
|
||||
*
|
||||
* METHOD <NombreMétodo> BLOCK {|Self,<arg1>,<arg2>,...,<argN>|...}
|
||||
@@ -244,20 +248,20 @@
|
||||
* EXTERN Si una función externa hace lo que el método necesita,
|
||||
* use esta cláusula para hacer una llamada optimizada a
|
||||
* esa función directamente.
|
||||
*
|
||||
* SETGET Para datos calculados. El nombre del método puede ser
|
||||
* manipulado como un elemento de DATA para establecer
|
||||
*
|
||||
* SETGET Para datos calculados. El nombre del método puede ser
|
||||
* manipulado como un elemento de DATA para establecer
|
||||
* (Set) u obtener (Get) un valor.
|
||||
*
|
||||
* VIRTUAL Métodos que no hacen nada. Utiles para Clases de Base
|
||||
* VIRTUAL Métodos que no hacen nada. Utiles para Clases de Base
|
||||
* donde la Clase hija definirá el comportamiento del método,
|
||||
* ó cuando Ud. esta creando y probando una Clase.
|
||||
*
|
||||
* OPERATOR Operador de Sobrecarga para las Clases.
|
||||
* Vea el ejemplo ../Tests/TestOp.prg para detalles
|
||||
*
|
||||
* CLASS <ClassName>
|
||||
* Use esta sintaxis solamente para definir un método
|
||||
* CLASS <ClassName>
|
||||
* Use esta sintaxis solamente para definir un método
|
||||
* completo después del comando ENDCLASS.
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
@@ -285,9 +289,9 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* METHOD es una extensión de Harbour.
|
||||
* METHOD es una extensión de Harbour.
|
||||
* $PLATFORMS$
|
||||
* Todas
|
||||
* Todas
|
||||
* $SEEALSO$
|
||||
* TClass(),Programación Orientada a Objeto,DATA,CLASS
|
||||
* $END$
|
||||
@@ -312,23 +316,23 @@
|
||||
* <params,...> Lista de parámetros opcionales para el método
|
||||
* $DESCRIPTION$
|
||||
* El comando MESSAGE es una característica rara vez usada, que permite
|
||||
* re-enviar una llamada a un método con un nombre diferente. Esto puede
|
||||
* re-enviar una llamada a un método con un nombre diferente. Esto puede
|
||||
* ser necesario si el nombre de un método entra en conflicto con una
|
||||
* función pública que necesita ser llamada desde adentro de un método
|
||||
* función pública que necesita ser llamada desde adentro de un método
|
||||
* de la Clase.
|
||||
*
|
||||
* Por ejemplo, se puede tener una función pública llamda BeginPaint()
|
||||
* que es usada para pintar las ventanas. Podría ser natural también
|
||||
* tener un método de la Clase Ventana, llamado :BeginPaint() que la
|
||||
* que es usada para pintar las ventanas. Podría ser natural también
|
||||
* tener un método de la Clase Ventana, llamado :BeginPaint() que la
|
||||
* aplicación pueda llamar.
|
||||
* Pero dentro del método de la Clase uno podría no estar habilitado
|
||||
* Pero dentro del método de la Clase uno podría no estar habilitado
|
||||
* para llamar a la función pública porque, los métodos internos están
|
||||
* basados en funciones estáticas (las que ocultan funciones públicas
|
||||
* basados en funciones estáticas (las que ocultan funciones públicas
|
||||
* con el mismo nombre)
|
||||
*
|
||||
* El comando MESSAGE permite crear el verdadero método con un nombre
|
||||
* El comando MESSAGE permite crear el verdadero método con un nombre
|
||||
* diferente (::xBeginPaint()), y aún permitir la sintaxis ::BeginPaint()
|
||||
* para llamar a ::xBeginPaint(). Este entonces es libre de llamar a
|
||||
* para llamar a ::xBeginPaint(). Este entonces es libre de llamar a
|
||||
* a la función publica BeginPaint().
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
@@ -341,9 +345,9 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* MESSAGE es una extensión de Harbour.
|
||||
* MESSAGE es una extensión de Harbour.
|
||||
* $PLATFORMS$
|
||||
* Todas
|
||||
* Todas
|
||||
* $SEEALSO$
|
||||
* METHOD,DATA,CLASS,Programación Orientada a Objeto
|
||||
* $END$
|
||||
@@ -362,9 +366,9 @@
|
||||
* $ARGUMENTS$
|
||||
* <NombreMétodo> Nombre del método a definir
|
||||
*
|
||||
* <params,...> Lista de parametros opcionales
|
||||
* <params,...> Lista de parametros opcionales
|
||||
* $DESCRIPTION$
|
||||
* ERROR HANDLER nombra al método que deberia manejar los errores para
|
||||
* ERROR HANDLER nombra al método que deberia manejar los errores para
|
||||
* la Clase que esta siendo definida.
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
@@ -375,9 +379,9 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* ERROR HANDLER es una extensión de Harbour.
|
||||
* ERROR HANDLER es una extensión de Harbour.
|
||||
* $PLATFORMS$
|
||||
* Todas
|
||||
* Todas
|
||||
* $SEEALSO$
|
||||
* Object Oriented Programming,ON ERROR,CLASS,METHOD,DATA
|
||||
* $END$
|
||||
@@ -396,10 +400,10 @@
|
||||
* $ARGUMENTS$
|
||||
* <NombreMétodo> Nombre del método a definir
|
||||
*
|
||||
* <params,...> Lista de parametros opcionales
|
||||
* <params,...> Lista de parametros opcionales
|
||||
* $DESCRIPTION$
|
||||
* ON ERROR es un sinónimo para ERROR HANDLER.
|
||||
* Este nombra al método que debería manejar los errores para la
|
||||
* Este nombra al método que debería manejar los errores para la
|
||||
* Clase que esta siendo definida.
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
@@ -410,9 +414,9 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* ON ERROR es una extensión de Harbour.
|
||||
* ON ERROR es una extensión de Harbour.
|
||||
* $PLATFORMS$
|
||||
* Todas
|
||||
* Todas
|
||||
* $SEEALSO$
|
||||
* Programación Orientada a Objeto,ERROR HANDLER,CLASS,METHOD,DATA
|
||||
* $END$
|
||||
@@ -427,10 +431,10 @@
|
||||
* $ONELINER$
|
||||
* Termina la declaración de una Clase.
|
||||
* $SYNTAX$
|
||||
* ENDCLASS
|
||||
* ENDCLASS
|
||||
* $DESCRIPTION$
|
||||
* ENDCLASS marca el fin de la declaración de una Clase.
|
||||
* Este es usualmente seguido por el método de la Clase que no es INLINE.
|
||||
* Este es usualmente seguido por el método de la Clase que no es INLINE.
|
||||
* $EXAMPLES$
|
||||
<fixed>
|
||||
* CLASS TWindow
|
||||
@@ -440,11 +444,10 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* ON ERROR es una extensión de Harbour.
|
||||
* ON ERROR es una extensión de Harbour.
|
||||
* $PLATFORMS$
|
||||
* Todas
|
||||
* Todas
|
||||
* $SEEALSO$
|
||||
* Programación Orientada a Objeto,CLASS,METHOD,DATA
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
@@ -31,7 +34,7 @@
|
||||
*
|
||||
*
|
||||
* Las opciones de la línea de comandos debe ser separada, al menos por
|
||||
* un espacio en blanco. </par>
|
||||
* un espacio en blanco. </par>
|
||||
* Las opciones pueden comenzar con el carácter '/' ó '-', </par>
|
||||
*
|
||||
* Opciones de la línea de comandos de: </par>
|
||||
@@ -39,7 +42,7 @@
|
||||
*
|
||||
* /a Declaración Automática de memvar </par>
|
||||
* ----------------- </par>
|
||||
* Esto causa que todas las variables declaradas por las sentencias
|
||||
* Esto causa que todas las variables declaradas por las sentencias
|
||||
* PARAMETER, PRIVATE ó PUBLIC sean automáticamente declaradas como
|
||||
* variables MEMVAR. </par>
|
||||
*
|
||||
@@ -55,9 +58,9 @@
|
||||
*
|
||||
* /es or /es0 - Todas las advertencias son ignoradas y el código de
|
||||
* salida retornado por el compilador (accedido por el
|
||||
* comando de DOS ERRORLEVEL) es igual a cero si no
|
||||
* comando de DOS ERRORLEVEL) es igual a cero si no
|
||||
* hay errores en el archivo fuente compilado. </par>
|
||||
* /es1 - Cualquier advertencia genera un código de salida
|
||||
* /es1 - Cualquier advertencia genera un código de salida
|
||||
* distinto de cero, pero la salida es aún creada. </par>
|
||||
* /es2 - Cualquier advertencia es tratada como error y ningún
|
||||
* archivo de salida es creado. El código de salida es
|
||||
@@ -87,9 +90,9 @@
|
||||
*
|
||||
* /n sin procedimiento de inicio implícito </par>
|
||||
* ----------------- </par>
|
||||
* El compilador no crea un procedimiento con el mismo nombre
|
||||
* que el del archivo compilado. Esto significa que algunas
|
||||
* declaraciones puestas antes de la primera sentencia de
|
||||
* El compilador no crea un procedimiento con el mismo nombre
|
||||
* que el del archivo compilado. Esto significa que algunas
|
||||
* declaraciones puestas antes de la primera sentencia de
|
||||
* PROCEDURE ó FUNCTION tienen el alcance del archivo y pueden ser
|
||||
* accedidas/usadas en todas las funciones/procedimientos definidos
|
||||
* en el archivo fuente compilado. Todas las sentencias ejecutables
|
||||
@@ -101,7 +104,7 @@
|
||||
*
|
||||
* /p genera un archivo de salida Pre-procesada (.ppo) </par>
|
||||
* ----------------- </par>
|
||||
* El compilador solamente crea el archivo que contiene el
|
||||
* El compilador solamente crea el archivo que contiene el
|
||||
* resultado del archivo fuente pre-procesado. </par>
|
||||
*
|
||||
* /q Quieto </par>
|
||||
@@ -109,7 +112,7 @@
|
||||
* El compilador no imprime ningún mensaje durante la compilación
|
||||
* (excepto la información del copyright). </par>
|
||||
*
|
||||
* /q0 que permanezca realmente Quieto y no muestre ni
|
||||
* /q0 que permanezca realmente Quieto y no muestre ni
|
||||
* siquiera la información del copyright. </par>
|
||||
*
|
||||
* /r[<libreria>] solicita al linker Revisar por <libreria> (ó ninguna) </par>
|
||||
@@ -123,7 +126,7 @@
|
||||
*
|
||||
* /t<ruta> ruta para la creación de un archivo Temporario </par>
|
||||
* ----------------- </par>
|
||||
* Actualmente no usado en harbour (El compilador de harbour no
|
||||
* Actualmente no usado en harbour (El compilador de harbour no
|
||||
* crea ningún archivo temporal) </par>
|
||||
*
|
||||
* /u[<archivo>] Usar la definición de comando establecido en el
|
||||
@@ -134,33 +137,33 @@
|
||||
* /v las Variables son asumidas como M-> </par>
|
||||
* ----------------- </par>
|
||||
* Todas las variables sin declarar ó unaliased son asumidas como
|
||||
* variables MEMVAR (variables privadas ó públicas). si este switch
|
||||
* variables MEMVAR (variables privadas ó públicas). si este switch
|
||||
* no es usado entones el alcance de estas variables es chequeado
|
||||
* en tiempo de ejecución. </par>
|
||||
*
|
||||
* /w[<nivel>] Establece el número de nivel de las advertencias
|
||||
* /w[<nivel>] Establece el número de nivel de las advertencias
|
||||
* (Warnings) (0..4, por defecto es 1) </par>
|
||||
* ----------------- </par>
|
||||
*
|
||||
* /w0 - sin advertencias </par>
|
||||
* /w0 - sin advertencias </par>
|
||||
* /w or /w1 - advertencias compatibles con Clipper </par>
|
||||
* /w2 - algunas advertencias útiles ausentes en Clipper </par>
|
||||
* /w3 - advertencias generadas para extensiones al lenguaje
|
||||
* hechas en Harbour. También habilita el chequeo de
|
||||
* sintaxis fuertemente tipeada pero sólo advierte
|
||||
* hechas en Harbour. También habilita el chequeo de
|
||||
* sintaxis fuertemente tipeada pero sólo advierte
|
||||
* contra los tipos declarados, o los tipos que pueden
|
||||
* ser calculados en tiempo de compilación. </par>
|
||||
* /w4 - habilita advertencias acerca de operaciones que son
|
||||
* sospechosas, lo cual significa que si se mezclan tipos
|
||||
* sospechosas, lo cual significa que si se mezclan tipos
|
||||
* sin declarar ó tipos que no pueden ser calculados
|
||||
* en tiempo de compilación, junto con los tipos ya
|
||||
* en tiempo de compilación, junto con los tipos ya
|
||||
* declarados, una advertencia será generada. </par>
|
||||
*
|
||||
* /x[<prefijo>] establece el símbolo del prefijo agregado al nombre
|
||||
* /x[<prefijo>] establece el símbolo del prefijo agregado al nombre
|
||||
* de función (para archivo.c solamente) </par>
|
||||
* ----------------- </par>
|
||||
* Establece el símbolo del prefijo agregado al nombre de función
|
||||
* de inicio (en la salida de lenguaje C, actualmente). Esta función
|
||||
* Establece el símbolo del prefijo agregado al nombre de función
|
||||
* de inicio (en la salida de lenguaje C, actualmente). Esta función
|
||||
* es generada automáticamente para cada módulo de PRG compilado.
|
||||
* Este prefijo adicional puede ser usado para suprimir problemas
|
||||
* con símbolos duplicados durante el enlazado de una aplicación
|
||||
@@ -177,7 +180,7 @@
|
||||
*
|
||||
* /10 restringe la longitud de símbolos a 10 caracteres. </par>
|
||||
* ----------------- </par>
|
||||
* Todos los nombres de variables y de funciones son cortados a un
|
||||
* Todos los nombres de variables y de funciones son cortados a un
|
||||
* máximo de 10 caracteres. </par>
|
||||
*
|
||||
*
|
||||
@@ -197,7 +200,7 @@
|
||||
* Si desea librerías de compilación y ejecución 100 % compatibles,
|
||||
* entonces Ud. debe definir: HARBOUR_STRICT_CLIPPER_COMPATIBILITY.
|
||||
* Esta opción debe ser definida en el archvivo ../include/hbsetup.h
|
||||
* (en efecto esta opción es puesta en un comentario por defecto - Ud.
|
||||
* (en efecto esta opción es puesta en un comentario por defecto - Ud.
|
||||
* necesita remover los caracteres /* */ solamente. Este cambio debe ser
|
||||
* realizado antes de invocar la utilidad make. </par>
|
||||
*
|
||||
@@ -205,27 +208,27 @@
|
||||
* Manejo de variables sin declarar </par>
|
||||
* -------------------------------- </par>
|
||||
* Cuando un valor es asignado a una variable no declarada y la opción
|
||||
* -v de la línea de comandos no es usada, entonces el compilador
|
||||
* Clipper asume que la variable es una variable PRIVATE ó PUBLIC y
|
||||
* -v de la línea de comandos no es usada, entonces el compilador
|
||||
* Clipper asume que la variable es una variable PRIVATE ó PUBLIC y
|
||||
* genera un opcode POPM (pop memvar). </par>
|
||||
*
|
||||
* Cuando el valor de una variable no declarada es accedido y la opción
|
||||
* -v de la línea de comandos no es usada, el compilador Harbour genera
|
||||
* -v de la línea de comandos no es usada, el compilador Harbour genera
|
||||
* un opcode PUSHV (push variable) para determinar el tipo de variable
|
||||
* en tiempo de ejecución
|
||||
* en tiempo de ejecución
|
||||
|
||||
* Si un campo con el nombre requerido existe en el area de trabajo
|
||||
* actual, entonces este valor es usado. Si no existe el campo, entones
|
||||
* una variable PRIVATE ó PUBLIC es usada (si existe). </par>
|
||||
*
|
||||
* El compilador Harbour genera un opcode para determinar el tipo de
|
||||
* variable en tiempo de ejecución (POPVARIABLE or PUSHVARIABLE) en
|
||||
* variable en tiempo de ejecución (POPVARIABLE or PUSHVARIABLE) en
|
||||
* ambos casos (asignación y acceso). </par>
|
||||
*
|
||||
* La diferencia puede ser chequeada por el siguiente código: </par>
|
||||
|
||||
* <fixed>
|
||||
* PROCEDURE MAIN()
|
||||
* PROCEDURE MAIN()
|
||||
* PRIVATE myname
|
||||
*
|
||||
* DBCREATE( "TEST", { { "MYNAME", "C", 10, 0} } )
|
||||
@@ -248,7 +251,7 @@
|
||||
*
|
||||
* RETURN
|
||||
* </fixed>
|
||||
*
|
||||
*
|
||||
* Pasando por refeerencia una variable no declarada </par>
|
||||
* ------------------------------------------------- </par>
|
||||
* El compilador Harbour usa un opcode especial PUSHP para pasar una
|
||||
@@ -283,12 +286,12 @@
|
||||
*
|
||||
* En la práctica, Clipper llamará a la función COUNT() dos veces:
|
||||
* La primera vez antes de la adición y la segunda después de la
|
||||
* adición.
|
||||
* adición.
|
||||
* En Harbour, COUNT() será llamada sólo una vez, antes de la adición. </par>
|
||||
*
|
||||
* El método Harbour (no-estricto) es: </par>
|
||||
* 1) Más rápido </par>
|
||||
* 2) Garantiza que la misma variable de instancia del mismo
|
||||
* 2) Garantiza que la misma variable de instancia del mismo
|
||||
* objeto será cambiada. </par>
|
||||
*
|
||||
* (Ver también: ../source/compiler/expropt.c) </par>
|
||||
@@ -297,8 +300,8 @@
|
||||
* Inicialización variables estáticas </par>
|
||||
* ---------------------------------- </par>
|
||||
*
|
||||
* Hay una diferencia en la inicialización de las variables estáticas
|
||||
* que son inicializadas con un bloque de código que refiere a una
|
||||
* Hay una diferencia en la inicialización de las variables estáticas
|
||||
* que son inicializadas con un bloque de código que refiere a una
|
||||
* variable local. Por ejemplo: </par>
|
||||
|
||||
* <fixed>
|
||||
@@ -313,7 +316,7 @@
|
||||
* RETURN
|
||||
* </fixed>
|
||||
|
||||
* El código de arriba compila bien en Clipper, pero éste genera un
|
||||
* El código de arriba compila bien en Clipper, pero éste genera un
|
||||
* error de ejecución:
|
||||
* Error/BASE 1132 Bound error: array access
|
||||
* Called from (b)STATICS$(0) </par>
|
||||
@@ -322,9 +325,9 @@
|
||||
* Error E0009 Illegal variable (b) initializer: 'MyLocalVar' </par>
|
||||
*
|
||||
* Ambos Clipper y Harbour estan manejando todas las variables locales
|
||||
* usadas en una forma especial: ellas son separadas de la pila (stack)
|
||||
* usadas en una forma especial: ellas son separadas de la pila (stack)
|
||||
* local de la función / procedimiento donde ellas son declaradas.
|
||||
* Esto permite acceder a estas variables despues de la salida de una
|
||||
* Esto permite acceder a estas variables despues de la salida de una
|
||||
* función / procedimiento. Sin embargo todas las variables estáticas
|
||||
* son inicializadas en un procedimiento separado ('STATICS$' en Clipper
|
||||
* y '(_INITSTATICS)' en Harbour) antes del procedimiento principal y
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
* www - http://www.harbour-project.org
|
||||
*
|
||||
* Copyright 2000 Alejandro de Gárate <alex_degarate@hotmail.com>
|
||||
* Documentación en Español de:
|
||||
* Documentación en Español de:
|
||||
* CDOW(),CMONTH(),DATE(),CTOD(),DAY(),DAYS(), DOW(),DTOS(),
|
||||
* DTOC(),ELAPTIME(),MONTH(),SECONDS(),SECS(),TIME(),YEAR()
|
||||
*
|
||||
@@ -24,7 +27,7 @@
|
||||
* $CATEGORY$
|
||||
* Fecha
|
||||
* $ONELINER$
|
||||
* Convierte una fecha al Nombre del día de la semana
|
||||
* Convierte una fecha al Nombre del día de la semana
|
||||
* $SYNTAX$
|
||||
* CDOW(<dFecha>) --> cDia
|
||||
* $ARGUMENTS$
|
||||
@@ -62,7 +65,7 @@
|
||||
* $CATEGORY$
|
||||
* Fecha
|
||||
* $ONELINER$
|
||||
* Retorna una cadena de caracteres con el nombre del mes
|
||||
* Retorna una cadena de caracteres con el nombre del mes
|
||||
* $SYNTAX$
|
||||
* CMONTH(<dFecha>) --> cMes
|
||||
* $ARGUMENTS$
|
||||
@@ -72,7 +75,7 @@
|
||||
* $DESCRIPTION$
|
||||
* Esta función retorna el nombre del mes (Enero, Febrero, etc.) de una
|
||||
* expresión de fecha <dFecha> pasada a ella.
|
||||
* Si una fecha NULL es pasada a la función, el valor de la función sera
|
||||
* Si una fecha NULL es pasada a la función, el valor de la función sera
|
||||
* un byte NULL.
|
||||
* Nota: El valor devuelto depende del módulo de lenguaje en uso.
|
||||
* $EXAMPLES$
|
||||
@@ -142,11 +145,11 @@
|
||||
* $RETURNS$
|
||||
* <dFecha> Una expresión de fecha.
|
||||
* $DESCRIPTION$
|
||||
* Esta función convierte una fecha que ha sido aportada como una
|
||||
* Esta función convierte una fecha que ha sido aportada como una
|
||||
* expresión de caracteres a una expresión de fecha. La expresión de
|
||||
* caracteres sera en la forma MM/DD/YY" (basada en el valor por defecto
|
||||
* en SET DATE) o en el formato apropiado especificado por el comado
|
||||
* SET DATE TO. Si una impropia cadena de caracteres es pasada a la
|
||||
* en SET DATE) o en el formato apropiado especificado por el comado
|
||||
* SET DATE TO. Si una impropia cadena de caracteres es pasada a la
|
||||
* función, un valor de fecha vacía será retornado.
|
||||
* $EXAMPLES$
|
||||
* ? CTOD('12/21/00')
|
||||
@@ -243,10 +246,10 @@
|
||||
* $ARGUMENTS$
|
||||
* <dFecha> Cualquier expresión válida de fecha.
|
||||
* $RETURNS$
|
||||
* DOW() retorna el dia de la semana en la forma numérica <nDay>
|
||||
* DOW() retorna el dia de la semana en la forma numérica <nDay>
|
||||
* $DESCRIPTION$
|
||||
* Esta función convierte un valor de fecha en un número representando
|
||||
* el dia de la semana. En el rango de 1 al 7, siendo 1 el dia Domingo
|
||||
* el dia de la semana. En el rango de 1 al 7, siendo 1 el dia Domingo
|
||||
* y 7 el dia Sábado.
|
||||
* $EXAMPLES$
|
||||
* ? DOW( DATE())
|
||||
@@ -279,10 +282,10 @@
|
||||
* $RETURNS$
|
||||
* Retorna la cadena de caracteres <cFecha> representando la fecha
|
||||
* $DESCRIPTION$
|
||||
* Esta función convierte una expresión de fecha (sea un campo ó una
|
||||
* Esta función convierte una expresión de fecha (sea un campo ó una
|
||||
* variable) expresada como <dFecha> a una expresión de caracteres en el
|
||||
* formato por defecto "MM/DD/YY". El formato de fecha devuelto por esta
|
||||
* función es controlado por el formato especificado por el comando
|
||||
* función es controlado por el formato especificado por el comando
|
||||
* SET DATE y es variable a diferencia del devuelto por la función DTOS().
|
||||
* $EXAMPLES$
|
||||
* ? DTOC( DATE())
|
||||
@@ -312,11 +315,11 @@
|
||||
* $ARGUMENTS$
|
||||
* <dFecha> Cualquier expresión válida de fecha.
|
||||
* $RETURNS$
|
||||
* DTOS() retorna <cFecha>
|
||||
* DTOS() retorna <cFecha>
|
||||
* $DESCRIPTION$
|
||||
* Esta función convierte un valor de fecha a una cadena de 8 caracteres
|
||||
* en el formato AAAAMMDD (no contiene separadores). Si el valor de
|
||||
* <dFecha> es una fecha vacía, esta función retorna una cadena de
|
||||
* <dFecha> es una fecha vacía, esta función retorna una cadena de
|
||||
* caracteres de 8 espacios en blanco.
|
||||
* $EXAMPLES$
|
||||
* ? DTOS( DATE())
|
||||
@@ -351,10 +354,10 @@
|
||||
* $DESCRIPTION$
|
||||
* Esta función devuelve una cadena que muestra la diferencia entre la
|
||||
* hora inicial representada por <cHoraInicial> y la hora final
|
||||
* representada por <cHoraFinal>. Si la hora de inicio es mayor que la
|
||||
* representada por <cHoraFinal>. Si la hora de inicio es mayor que la
|
||||
* de finalización, la función asume que la fecha a cambiado una vez.
|
||||
* $EXAMPLES$
|
||||
* // Muestra el tiempo que se uso el programa parecido a como lo
|
||||
* // Muestra el tiempo que se uso el programa parecido a como lo
|
||||
* // hacía el viejo Norton Utilities
|
||||
* STATIC cHoraIni // al inicio del programa
|
||||
* cHoraIni := TIME()
|
||||
@@ -369,7 +372,7 @@
|
||||
* $PLATFORMS$
|
||||
* Todas
|
||||
* $FILES$
|
||||
* La librería es rtl
|
||||
* La librería es rtl
|
||||
* $SEEALSO$
|
||||
* SECS(),SECONDS(),TIME(),DAY()
|
||||
* $END$
|
||||
@@ -394,7 +397,7 @@
|
||||
* Esta función devuelve el valor numérico del mes contenido en <dFecha>.
|
||||
* Este valor esta en el formato de cuatro dígitos y no es afectado
|
||||
* por el seteo de los comandos SET CENTURY y SET DATE.
|
||||
* Si se pasa una fecha vacía CTOD("") a esta función devuelve el valor
|
||||
* Si se pasa una fecha vacía CTOD("") a esta función devuelve el valor
|
||||
* cero.
|
||||
* $EXAMPLES$
|
||||
* ? Month(DATE())
|
||||
@@ -436,7 +439,7 @@
|
||||
* // Muestra el tiempo que estuvo en ejecución una rutina
|
||||
* nArranque = SECONDS()
|
||||
*
|
||||
* // Aca va la llamada a la rutina
|
||||
* // Aca va la llamada a la rutina
|
||||
* // : :
|
||||
* ? "Tardó: ", SECONDS()- nArranque ," segundos"
|
||||
* $STATUS$
|
||||
@@ -478,7 +481,7 @@
|
||||
* $COMPLIANCE$
|
||||
* Esta función es totalmente compatible con CA-Clipper.
|
||||
* Nota: No esta documentada en las NG, ni en el manual en español de
|
||||
* CA-Clipper.
|
||||
* CA-Clipper.
|
||||
* $PLATFORMS$
|
||||
* Todas
|
||||
* $FILES$
|
||||
@@ -487,7 +490,7 @@
|
||||
* SECONDS(),ELAPTIME(),TIME()
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
@@ -503,7 +506,7 @@
|
||||
* $RETURNS$
|
||||
* TIME() retorna la cadena de caracteres <cHora> representando la hora
|
||||
* $DESCRIPTION$
|
||||
* Esta función devuelve la hora del sistema representada como una
|
||||
* Esta función devuelve la hora del sistema representada como una
|
||||
* expresión de caracteres en el formato HH:MM:SS, para calculos de
|
||||
* tiempo conviene usar SECONDS().
|
||||
* $EXAMPLES$
|
||||
@@ -539,7 +542,7 @@
|
||||
* Esta función devuelve el valor numérico del año contenido en <dFecha>
|
||||
* Este valor esta en el formato de cuatro dígitos y no es afectado
|
||||
* por el seteo de los comandos SET CENTURY y SET DATE.
|
||||
* Si se pasa una fecha vacía CTOD("") a esta función devuelve el valor
|
||||
* Si se pasa una fecha vacía CTOD("") a esta función devuelve el valor
|
||||
* cero.
|
||||
* $EXAMPLES$
|
||||
* ? YEAR( DATE()) // Resultado: 2000
|
||||
@@ -556,4 +559,3 @@
|
||||
* DAY(),MONTH()
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
@@ -24,15 +27,15 @@
|
||||
* $SYNTAX$
|
||||
* __Dir( [<cFileMask>] ) --> NIL
|
||||
* $ARGUMENTS$
|
||||
* <cFileMask> Máscara de archivos para incluir en el retorno de la
|
||||
* función. Esta podría contener subdirectorios (path) y caracteres
|
||||
* <cFileMask> Máscara de archivos para incluir en el retorno de la
|
||||
* función. Esta podría contener subdirectorios (path) y caracteres
|
||||
* estándar usados como comdines, segun sean soportados por el sistema
|
||||
* operativo (como * y ?). Si <cFileMask> no contiene la ruta al archivo
|
||||
* entonces SET DEFAULT es usado para mostrar archivos en la máscara.
|
||||
* $RETURNS$
|
||||
* __Dir() siempre retorna NIL.
|
||||
* $DESCRIPTION$
|
||||
* Si ninguna <cFileMask> es dada, __Dir() muestra información acerca de
|
||||
* Si ninguna <cFileMask> es dada, __Dir() muestra información acerca de
|
||||
* todos los *.DBF en la ruta SET DEFAULT. Esta información contiene:
|
||||
* - Nombre del archivo
|
||||
* - Numero de registros
|
||||
@@ -55,23 +58,23 @@
|
||||
*
|
||||
* __Dir( "*.dbf" ) // Lista todos los DBF en el directorio actual
|
||||
*
|
||||
* // Lista todos los PRG de la librería de ejecución (RTL) de Harbour
|
||||
* // para sistemas operativos compatibles con DOS
|
||||
* // Lista todos los PRG de la librería de ejecución (RTL) de Harbour
|
||||
* // para sistemas operativos compatibles con DOS
|
||||
* __Dir( "c:\harbour\source\rtl\*.prg" )
|
||||
*
|
||||
* // Lista todos los archivos de la sección pública sobre una máquina
|
||||
* // tipo Unix
|
||||
* // Lista todos los archivos de la sección pública sobre una máquina
|
||||
* // tipo Unix
|
||||
* __Dir( "/pub" )
|
||||
</fixed>
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* Información de DBF: CA-Clipper muestra nombres de archivos en el
|
||||
* Información de DBF: CA-Clipper muestra nombres de archivos en el
|
||||
* formato 8.3, Harbour muestra los primeros 15 caracteres si un nombre
|
||||
* largo de archivo esta disponible.
|
||||
*
|
||||
* Listado de archivos: para formatear los nombres mostrados usamos algo
|
||||
* así como:
|
||||
* así como:
|
||||
* PADR( Nombre, 8 ) + " " + PADR( Ext, 3 )
|
||||
* CA-Clipper usa nombres de archivo 8.3, con Harbour probablemente se
|
||||
* podría cortar los nombres largos de archivo para llenar este molde.
|
||||
@@ -93,13 +96,13 @@
|
||||
* $SYNTAX$
|
||||
* DIR [<cFileMask>]
|
||||
* $ARGUMENTS$
|
||||
* <cFileMask> Máscara de archivos para incluir en el retorno de la
|
||||
* función. Esta podría contener subdirectorios (path) y caracteres
|
||||
* <cFileMask> Máscara de archivos para incluir en el retorno de la
|
||||
* función. Esta podría contener subdirectorios (path) y caracteres
|
||||
* estándar usados como comdines, segun sean soportados por el sistema
|
||||
* operativo (como * y ?). Si <cFileMask> no contiene la ruta al archivo
|
||||
* entonces SET DEFAULT es usado para mostrar archivos en la máscara.
|
||||
* $DESCRIPTION$
|
||||
* Si ninguna <cFileMask> es dada, __Dir() muestra información acerca de
|
||||
* Si ninguna <cFileMask> es dada, __Dir() muestra información acerca de
|
||||
* todos los *.DBF en la ruta SET DEFAULT. esta información contiene:
|
||||
* - Nombre del archivo
|
||||
* - Número de registros
|
||||
@@ -122,23 +125,23 @@
|
||||
*
|
||||
* __Dir( "*.dbf" ) // Lista todos los DBF en el directorio actual
|
||||
*
|
||||
* // Lista todos los PRG de la librería de ejecución (RTL) de Harbour
|
||||
* // para sistemas operativos compatibles con DOS
|
||||
* // Lista todos los PRG de la librería de ejecución (RTL) de Harbour
|
||||
* // para sistemas operativos compatibles con DOS
|
||||
* __Dir( "c:\harbour\source\rtl\*.prg" )
|
||||
*
|
||||
* // Lista todos los archivos de la sección pública sobre una máquina
|
||||
* // tipo Unix
|
||||
* // Lista todos los archivos de la sección pública sobre una máquina
|
||||
* // tipo Unix
|
||||
* __Dir( "/pub" )
|
||||
</fixed>
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* Información de DBF: CA-Clipper muestra nombres de archivos en el
|
||||
* Información de DBF: CA-Clipper muestra nombres de archivos en el
|
||||
* formato 8.3, Harbour muestra los primeros 15 caracteres si un nombre
|
||||
* largo de archivo está disponible.
|
||||
*
|
||||
* Listado de archivos: para formatear los nombres mostrados usamos algo
|
||||
* así como:
|
||||
* así como:
|
||||
* PADR( Nombre, 8 ) + " " + PADR( Ext, 3 )
|
||||
* CA-Clipper usa nombres de archivo 8.3, con Harbour probablemente se
|
||||
* podría cortar los nombres largos de archivo para llenar este molde.
|
||||
@@ -159,8 +162,8 @@
|
||||
* ADIR( [<cFileMask>], [<aNombre>], [<aTamano>], [<aFecha>],
|
||||
* [<aHora>], [<aAtrib>] ) -> nEntradasDirectorio
|
||||
* $ARGUMENTS$
|
||||
* <cFileMask> Máscara de archivos para incluir en el retorno de la
|
||||
* función. Esta podria contener subdirectorios (path) y caracteres
|
||||
* <cFileMask> Máscara de archivos para incluir en el retorno de la
|
||||
* función. Esta podria contener subdirectorios (path) y caracteres
|
||||
* estandar usados como comodines, segun sean soportados por el sistema
|
||||
* operativo (como * y ?). Si <cFileMask> no contiene la ruta al archivo
|
||||
* entonces SET DEFAULT es usado para mostrar archivos en la máscara.
|
||||
@@ -180,10 +183,10 @@
|
||||
* archivo que cumplen con <cFileMask>. Cada elemento es del tipo "Date"
|
||||
*
|
||||
* <aHora> Array para llenar con la Hora de la ultima modificación del
|
||||
* archivo que cumplen con <cFileMask>. Cada elemento es una cadena de
|
||||
* archivo que cumplen con <cFileMask>. Cada elemento es una cadena de
|
||||
* caracteres en el formato: HH:MM:SS.
|
||||
*
|
||||
* <aAtrib> Array para llenar con los atributos de los archivos que
|
||||
* <aAtrib> Array para llenar con los atributos de los archivos que
|
||||
* cumplen con <cFileMask>. Cada elemento es una cadena de caracteres,
|
||||
* Vea DIRECTORY() por información sobre los valores de los atributos.
|
||||
* Si Ud. pasa un array a <aAtrib>, la función va a devolver archivos
|
||||
@@ -191,7 +194,7 @@
|
||||
* Si <aAtrib> no es especificado o es distinto de un array solo
|
||||
* archivos con atributo normal porian ser devueltos.
|
||||
*
|
||||
* Nota: Al momento de escribir esta documentación todavia no había
|
||||
* Nota: Al momento de escribir esta documentación todavia no había
|
||||
* información sobre el comportamiento de esta función con los
|
||||
* atributos que poseen las maquinas tipo Unix.
|
||||
* $RETURNS$
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
@@ -39,8 +42,8 @@
|
||||
*
|
||||
* HB_FS_AVAIL La cantidad de espacio disponible para el usuario que
|
||||
* hace la solicitud. Este valor podría ser menor que
|
||||
* HB_FS_FREE si las asignaciones de espacio en disco
|
||||
* (quotas) son soportadas por el sistema operativo al
|
||||
* HB_FS_FREE si las asignaciones de espacio en disco
|
||||
* (quotas) son soportadas por el sistema operativo al
|
||||
* tiempo de ejecución y estas quotas están asignadas.
|
||||
* De otro modo el valor será igual al retornado por
|
||||
* HB_FS_FREE.
|
||||
@@ -75,5 +78,3 @@
|
||||
* El archivo de cabecera es fileio.ch
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
@@ -40,5 +43,3 @@
|
||||
* ERRORBLOCK(),Error class
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
@@ -30,17 +33,17 @@
|
||||
*
|
||||
* <xVal...> Lista de argumentos para ser pasados al bloque de código.
|
||||
* $RETURNS$
|
||||
* EVAL() retorna <xExpresion>, el valor de la última expresión dentro
|
||||
* EVAL() retorna <xExpresion>, el valor de la última expresión dentro
|
||||
* del bloque. El valor devuelto puede ser de cualquier tipo válido.
|
||||
* $DESCRIPTION$
|
||||
* Esta función evalúa el bloque de código expresado como <bBloque> al
|
||||
* ejecutarlo y pasarle los parámetros como argumentos ,luego retorna su
|
||||
* valor evaluado. Si hay múltiples expresiones dentro del bloque de
|
||||
* valor evaluado. Si hay múltiples expresiones dentro del bloque de
|
||||
* código, la última expresión será el valor de esta función.
|
||||
*
|
||||
* Si el bloque de código requiere parámetros para ser pasados a éste,
|
||||
* ellos son especificados en la lista de parámetros <xVal>.
|
||||
* Cada parámetro es separado por una coma dentro de la lista de
|
||||
* Cada parámetro es separado por una coma dentro de la lista de
|
||||
* parámetros y cada expresión es separada por comas dentro de la lista
|
||||
* de expresiones.
|
||||
*
|
||||
@@ -50,19 +53,19 @@
|
||||
* permite exportar variables estáticas y locales dentro de él,
|
||||
* la da una gran versatilidad.
|
||||
* Aunque las macros y los bloques de código son similares, las
|
||||
* Las macros son cadenas de caracteres que se compilan durante
|
||||
* Las macros son cadenas de caracteres que se compilan durante
|
||||
* la ejecución de un programa y se ejecutan a continuación.
|
||||
* Los bloques de código se compilan junto con los otros PRG
|
||||
* durante la compilación del programa. Por esto son más rápidos,
|
||||
* Los bloques de código se compilan junto con los otros PRG
|
||||
* durante la compilación del programa. Por esto son más rápidos,
|
||||
* Es posible compilar un bloque de código en tiempo de ejecución
|
||||
* desde una cadena de caracteres usando el operador de macros (&).
|
||||
* desde una cadena de caracteres usando el operador de macros (&).
|
||||
* Un bloque de código esta compuesto por:
|
||||
* { |<lista argumentos>| <lista expresiones> }
|
||||
* { |<lista argumentos>| <lista expresiones> }
|
||||
* Los separadores verticales deben estar presentes aunque no el
|
||||
* bloque no reciba argumentos.
|
||||
* $EXAMPLES$
|
||||
* bBloque = {|arg1, arg2| QOUT( arg1+arg2) }
|
||||
* EVAL( bBloque, "Harbour", " es fabuloso")
|
||||
* EVAL( bBloque, "Harbour", " es fabuloso")
|
||||
* $TESTS$
|
||||
* Ver ejemplos.
|
||||
* $STATUS$
|
||||
|
||||
@@ -1,66 +1,68 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
* www - http://www.harbour-project.org
|
||||
*
|
||||
* Copyright 2000 Alejandro de Gárate <alex_degarate@hotmail.com>
|
||||
* Documentación en Español de:
|
||||
* Readme, hb_gcAlloc(), hb_gcFree(), hb_gcLockItem(),
|
||||
* hb_gcUnlockItem(), hb_gcCollectAll(), hb_gcItemRef(), HB_GCALL()
|
||||
* Documentación en Español de:
|
||||
* Readme, hb_gcAlloc(), hb_gcFree(), hb_gcLockItem(),
|
||||
* hb_gcUnlockItem(), hb_gcCollectAll(), hb_gcItemRef(), HB_GCALL()
|
||||
*
|
||||
* Copyright 2000 brian Brian Hays <bhays@abacuslaw.com>
|
||||
* Documentación en Inglés de:
|
||||
* Readme, hb_gcAlloc(), hb_gcFree(), hb_gcLockItem(),
|
||||
* hb_gcUnlockItem(), hb_gcCollectAll(), hb_gcItemRef(), HB_GCALL()
|
||||
* Documentación en Inglés de:
|
||||
* Readme, hb_gcAlloc(), hb_gcFree(), hb_gcLockItem(),
|
||||
* hb_gcUnlockItem(), hb_gcCollectAll(), hb_gcItemRef(), HB_GCALL()
|
||||
*
|
||||
* Vea doc/license.txt por los términos de la licencia.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* Recolector de memoria
|
||||
* Recolector de memoria
|
||||
* $CATEGORY$
|
||||
* Documentación - Recolector de memoria
|
||||
* Documentación - Recolector de memoria
|
||||
* $ONELINER$
|
||||
* Léame con las características de la recoleccion de memoria en Harbour.
|
||||
* $DESCRIPTION$
|
||||
* El recolector de memoria (garbage collector) usa la siguiente lógica:
|
||||
* - primero recolectar todas las ubicaciones de memoria que puedan
|
||||
* - primero recolectar todas las ubicaciones de memoria que puedan
|
||||
* constituirse en "basura"
|
||||
* - luego inspeccionar todas las variables, por si esos bloques están
|
||||
* - luego inspeccionar todas las variables, por si esos bloques están
|
||||
* todavía referenciados.
|
||||
*
|
||||
* Note que sólo arrays, objetos y bloques de código son recolectados
|
||||
* porque esos son los únicos tipos de datos que pueden causar:
|
||||
* auto-referencias
|
||||
* (a[1]:=a)
|
||||
* auto-referencias
|
||||
* (a[1]:=a)
|
||||
* ó referencias circulares:
|
||||
* (a[1]:=b; b[1]:=c; c[1]:=a)
|
||||
* (a[1]:=b; b[1]:=c; c[1]:=a)
|
||||
* que no pueden ser apropiadamente desasignadas por un simple conteo
|
||||
* de referencia.
|
||||
*
|
||||
* Como todas las variables en Harbour son almacenadas dentro de algunas
|
||||
* tablas disponibles (eval stack, tabla de memvars y array de variables
|
||||
* estáticas), entonces chequear si la referencia es todavía activa es
|
||||
* estáticas), entonces chequear si la referencia es todavía activa es
|
||||
* bastante fácil y no requiere ningún tratamiento especial durante la
|
||||
* la asignación de memoria. Adicionalmente el recolector de memoria
|
||||
* inspecciona algunos datos internos usados por la implementación de
|
||||
* inspecciona algunos datos internos usados por la implementación de
|
||||
* objetos de Harbour que también almacena algunos valores que pueden
|
||||
* contener referencias de memoria. Estos datos son usados para inicia-
|
||||
* lizar variables de instancia de la clase, y son almacenadas en
|
||||
* lizar variables de instancia de la clase, y son almacenadas en
|
||||
* variables compartidas por la clase.
|
||||
*
|
||||
* En casos especiales cuando el valor de una variable de Harbour es
|
||||
* almacenada internamente en algún area estática (a nivel de lenguaje C
|
||||
* ó asembler), por ejemplo SETKEY() almacena bloques de código que
|
||||
* serán evaluados caundo se presione una tecla, el recolector de
|
||||
* memoria no será capaz de inspecionar esos valores porque este no
|
||||
* conoce su ubicación. Esto podría ocasionar que algunos bloques de
|
||||
* memoria sean liberados prematuramente. Para prevenir la prematura
|
||||
* desasignación de esos bloques ellos deben ser bloqueados para el
|
||||
* ó asembler), por ejemplo SETKEY() almacena bloques de código que
|
||||
* serán evaluados caundo se presione una tecla, el recolector de
|
||||
* memoria no será capaz de inspecionar esos valores porque este no
|
||||
* conoce su ubicación. Esto podría ocasionar que algunos bloques de
|
||||
* memoria sean liberados prematuramente. Para prevenir la prematura
|
||||
* desasignación de esos bloques ellos deben ser bloqueados para el
|
||||
* recolector de memoria.
|
||||
* Para ello se definen distintos estados del bloque de memoria:
|
||||
* #define HB_GC_UNLOCKED 0 /* desbloqueado */
|
||||
@@ -68,53 +70,53 @@
|
||||
* #define HB_GC_USED_FLAG 2 /* bit para la bandera usado/sin uso */
|
||||
*
|
||||
* El bloque de memoria puede ser bloqueado con hb_gcLockItem(), método
|
||||
* recomendado si un ítem de estructura es usado ó la función hb_gcLock()
|
||||
* recomendado si un ítem de estructura es usado ó la función hb_gcLock()
|
||||
* un puntero directo a memoria es usado.
|
||||
* El bloque de memoria puede ser desbloqueado por hb_gcUnlockItem() ó
|
||||
* hb_gcUnlock().
|
||||
* hb_gcUnlock().
|
||||
*
|
||||
* Nótese sin embargo que todas las variables pasadas a una función de
|
||||
* bajo nivel son pasadas mediante la pila de evaluación (eval stack),
|
||||
* Nótese sin embargo que todas las variables pasadas a una función de
|
||||
* bajo nivel son pasadas mediante la pila de evaluación (eval stack),
|
||||
* así ellas no necesitan bloquearse durante la llamada a la función.
|
||||
* El bloque puede ser requerido, si un valor pasado es copiado dentro
|
||||
* de algún area estática para hacerla disponible para otras funciones
|
||||
* de bajo nivel, llamadas después de la salida de la función que
|
||||
* almacena el valor. Esto es requerido porque el valor es removido de
|
||||
* la pila de evaluación después de la llamada a la función y esta no
|
||||
* puede seguir siendo referenciada por otras variables.
|
||||
* de bajo nivel, llamadas después de la salida de la función que
|
||||
* almacena el valor. Esto es requerido porque el valor es removido de
|
||||
* la pila de evaluación después de la llamada a la función y esta no
|
||||
* puede seguir siendo referenciada por otras variables.
|
||||
*
|
||||
* Sin embargo la inspección de todas las variables puede ser una
|
||||
* Sin embargo la inspección de todas las variables puede ser una
|
||||
* operación de un gran consumo de tiempo. Esto requiere que todos los
|
||||
* arrays asignados tengan que ser recorridos a través de todos sus
|
||||
* elementos para encontrar más arrays.
|
||||
* arrays asignados tengan que ser recorridos a través de todos sus
|
||||
* elementos para encontrar más arrays.
|
||||
* También todos los bloques de código son inspecionados, en busca de
|
||||
* variables locales separadas que ellos estan referenciando. Por esta
|
||||
* esta razón, la busqueda por bloques de memoria no referenciados es
|
||||
* realizada durante los estados inactivos.
|
||||
*
|
||||
* El estado inactivo es el estado cuando no hay un código real de la
|
||||
* aplicación ejecutándose. Por ejemplo, el código del usuario es
|
||||
* El estado inactivo es el estado cuando no hay un código real de la
|
||||
* aplicación ejecutándose. Por ejemplo, el código del usuario es
|
||||
* detenido durante 0.1 segundo por INKEY(0.1) - Harbour esta chequeando
|
||||
* sólo el teclado durante este tiempo. Esto deja sin embargo suficiente
|
||||
* tiempo para muchas otras tareas en segundo plano. Una de esas tareas
|
||||
* en segundo plano, puede ser la búsqueda de bloques de memoria no
|
||||
* tiempo para muchas otras tareas en segundo plano. Una de esas tareas
|
||||
* en segundo plano, puede ser la búsqueda de bloques de memoria no
|
||||
* referenciados.
|
||||
*
|
||||
* Asignando memoria </par>
|
||||
* -----------------
|
||||
*
|
||||
* El recolector de memoria, recoge bloques de memoria asignados con
|
||||
* llamadas a la función hb_gcAlloc(). La memoria asignada por
|
||||
* llamadas a la función hb_gcAlloc(). La memoria asignada por
|
||||
* hb_gcAlloc() debería ser liberada con la función hb_gcFree().
|
||||
*
|
||||
*
|
||||
* Bloqueando memoria </par>
|
||||
* ------------------
|
||||
*
|
||||
* La memoria asignada con hb_gcAlloc() debería ser bloqueada para
|
||||
* La memoria asignada con hb_gcAlloc() debería ser bloqueada para
|
||||
* prevenir una automática liberación como un puntero de memoria si no
|
||||
* es almacenado dentro de una variable a nivel de Harbour. Todos los
|
||||
* valores de Harbour (items), almacenados internamente en áreas
|
||||
* es almacenado dentro de una variable a nivel de Harbour. Todos los
|
||||
* valores de Harbour (items), almacenados internamente en áreas
|
||||
* estáticas de lenguaje C deben ser bloqueadas.
|
||||
* Vea hb_gcLockItem() y hb_gcUnlockItem() para más información.
|
||||
*
|
||||
@@ -122,8 +124,8 @@
|
||||
* La recoleción de memoria </par>
|
||||
* ------------------------
|
||||
*
|
||||
* Durante la búsqueda de memoria no referenciada, el recolector de
|
||||
* memoria (RM) está usando un algoritmo llamado "mark & sweep", marcar
|
||||
* Durante la búsqueda de memoria no referenciada, el recolector de
|
||||
* memoria (RM) está usando un algoritmo llamado "mark & sweep", marcar
|
||||
* y barrer. Este es realizado en tres etapas:
|
||||
*
|
||||
* 1) Marcar todos los bloques asignados por el RM con un bandera:
|
||||
@@ -136,16 +138,16 @@
|
||||
* memoria que aún estan marcados como sin uso y que no están bloqueados.
|
||||
*
|
||||
* Para acelerar las cosas un poco, la etapa de marca es simplificada
|
||||
* por la inversión del significado de la bandera "sin uso". Después de
|
||||
* la desasignación de los bloques sin uso, todos los bloques todavía
|
||||
* por la inversión del significado de la bandera "sin uso". Después de
|
||||
* la desasignación de los bloques sin uso, todos los bloques todavía
|
||||
* activos son marcados con la bandera "usado" así nosotros podemos
|
||||
* invertir el significado de esta bandera al estado "sin uso" en la
|
||||
* próxima recoleción
|
||||
* Todos los bloques de memoria nuevos ó sin bloquear son automáticamente
|
||||
* marcados como "sin uso" usando la bandera actual, lo cual asegura que
|
||||
* todos los bloques de memoria son marcados con la misma bandera antes
|
||||
* todos los bloques de memoria son marcados con la misma bandera antes
|
||||
* de que la etapa de barrido comience.
|
||||
*
|
||||
*
|
||||
* Ver hb_gcCollectAll() y hb_gcItemRef()
|
||||
*
|
||||
*
|
||||
@@ -168,7 +170,7 @@
|
||||
* $FUNCNAME$
|
||||
* hb_gcAlloc()
|
||||
* $CATEGORY$
|
||||
* Recolector de memoria
|
||||
* Recolector de memoria
|
||||
* $ONELINER$
|
||||
* Asigna memoria que será recolectada por el recolector de memoria.
|
||||
* $SYNTAX$
|
||||
@@ -178,21 +180,21 @@
|
||||
* <ulSize> es el tamaño solicitado del bloque de memoria.
|
||||
*
|
||||
* <pCleanupFunc> es un Puntero a la función HB_GARBAGE_FUNC que será
|
||||
* llamada directamente antes de la liberación del bloque de memoria
|
||||
* sin uso ó NULL. Esta función debería liberar toda otra memoria
|
||||
* asignada y almacenada dentro del bloque de memoria.
|
||||
* llamada directamente antes de la liberación del bloque de memoria
|
||||
* sin uso ó NULL. Esta función debería liberar toda otra memoria
|
||||
* asignada y almacenada dentro del bloque de memoria.
|
||||
* Por ejemplo, esta libera todos los items almacenados dentro del array.
|
||||
* La función recibe un sólo parámetro: el puntero a la memoria asignada
|
||||
* por hb_gcAlloc().
|
||||
* $RETURNS$
|
||||
* Devuelve un puntero a la memoria asignada ó esta generará un error
|
||||
* Devuelve un puntero a la memoria asignada ó esta generará un error
|
||||
* interno irrecuperable.
|
||||
* $DESCRIPTION$
|
||||
* hb_gcAlloc() es usada para asignar la memoria que será rastreada por
|
||||
* hb_gcAlloc() es usada para asignar la memoria que será rastreada por
|
||||
* el RM. Este permite una apropiada liberación de memoria en el caso
|
||||
* de variables auto-referenciadas ó con referencias cruzadas a nivel de
|
||||
* Harbour.
|
||||
* La memoria asignada con esta función debería ser liberada con la
|
||||
* La memoria asignada con esta función debería ser liberada con la
|
||||
* función hb_gcFree() ó esta será automáticamente desasignada por el
|
||||
* RM si no esta bloqueada ó si no esta referenciada por alguna
|
||||
* variable a nivel de Harbour.
|
||||
@@ -200,7 +202,7 @@
|
||||
* Vea ../source/vm/arrays.c
|
||||
*
|
||||
* PHB_BASEARRAY pArr = (PHB_BASEARRAY) hb_gcAlloc( sizeof( HB_BASEARRAY),
|
||||
* hb_arrayReleaseGarbage );
|
||||
* hb_arrayReleaseGarbage );
|
||||
* $STATUS$
|
||||
* C
|
||||
* $COMPLIANCE$
|
||||
@@ -219,13 +221,13 @@
|
||||
* $FUNCNAME$
|
||||
* hb_gcFree()
|
||||
* $CATEGORY$
|
||||
* Recolector de memoria
|
||||
* Recolector de memoria
|
||||
* $ONELINER$
|
||||
* Libera la memoria que fué asignada con hb_gcAlloc().
|
||||
* $SYNTAX$
|
||||
* void hb_gcFree( void *pMemoryPtr );
|
||||
* $ARGUMENTS$
|
||||
* <pMemoryPtr> es el puntero a la memoria a liberar. Este puntero de
|
||||
* <pMemoryPtr> es el puntero a la memoria a liberar. Este puntero de
|
||||
* memoria debe ser asignado con la función hb_gcAlloc().
|
||||
* $RETURNS$
|
||||
* Nada.
|
||||
@@ -253,7 +255,7 @@
|
||||
* $FUNCNAME$
|
||||
* hb_gcLockItem()
|
||||
* $CATEGORY$
|
||||
* Recolector de memoria
|
||||
* Recolector de memoria
|
||||
* $ONELINER$
|
||||
* Bloquea la memoria para prevenir la desasignación por el RM.
|
||||
* $SYNTAX$
|
||||
@@ -269,7 +271,7 @@
|
||||
* La función hb_gcLockItem() es usada para bloquear el puntero de memoria
|
||||
* almacenado en la estructura item pasada. Este suprime la liberación
|
||||
* de memoria si el RM no encuentra alguna referencia a este puntero
|
||||
* El RM almacena un contador de bloqueo y cada llamada a esta función
|
||||
* El RM almacena un contador de bloqueo y cada llamada a esta función
|
||||
* incrementa el contador. El item es bloqueado si el contador es mayor
|
||||
* que cero.
|
||||
* $EXAMPLES$
|
||||
@@ -294,7 +296,7 @@
|
||||
* $FUNCNAME$
|
||||
* hb_gcUnlockItem()
|
||||
* $CATEGORY$
|
||||
* Recolector de memoria
|
||||
* Recolector de memoria
|
||||
* $ONELINER$
|
||||
* Desbloquea la memmoria para prevenir la liberación por el RM
|
||||
* $SYNTAX$
|
||||
@@ -311,12 +313,12 @@
|
||||
* memoria almacenado en la estructura item pasada, que fué previamente
|
||||
* bloqueada con una llamada a hb_gcLockItem(). Esto permite liberar la
|
||||
* memoria durante la recolección de memoria sin uso si el RM no encuentra
|
||||
* ninguna referencia a este puntero. El RM almacena el contador de
|
||||
* ninguna referencia a este puntero. El RM almacena el contador de
|
||||
* bloqueo, cada llamda a esta función decrementa el contador.
|
||||
* Esta función no libera la memoria almacenada dentro del item, la
|
||||
* Esta función no libera la memoria almacenada dentro del item, la
|
||||
* memoria debe ser desasignada sin embargo durante la recoleción de
|
||||
* memoria sin uso más cercana si el contador de bloqueo es igual a cero
|
||||
* y el puntero de memoria no es referenciado por ninguna variable a
|
||||
* y el puntero de memoria no es referenciado por ninguna variable a
|
||||
* nivel de Harbour.
|
||||
* $EXAMPLES$
|
||||
* Vea ../source/rtl/setkey.c
|
||||
@@ -339,7 +341,7 @@
|
||||
* $FUNCNAME$
|
||||
* hb_gcCollectAll()
|
||||
* $CATEGORY$
|
||||
* Recolector de memoria
|
||||
* Recolector de memoria
|
||||
* $ONELINER$
|
||||
* Examina todos los bloques de memoria y libera la memoria sin uso.
|
||||
* $SYNTAX$
|
||||
@@ -352,7 +354,7 @@
|
||||
* Esta función examina la pila de evaluación, las tablas de memvars,
|
||||
* el array de variables estáticas y las tablas de clases creadas en
|
||||
* busca de bloques de memoria referenciados. Después de examinar todos
|
||||
* los bloques de memoria sin uso y los bloques que no estan bloqueados,
|
||||
* los bloques de memoria sin uso y los bloques que no estan bloqueados,
|
||||
* son liberados.
|
||||
* $STATUS$
|
||||
* C
|
||||
@@ -372,7 +374,7 @@
|
||||
* $FUNCNAME$
|
||||
* hb_gcItemRef()
|
||||
* $CATEGORY$
|
||||
* Recolector de memoria
|
||||
* Recolector de memoria
|
||||
* $ONELINER$
|
||||
* Marca la memoria para prevenir la desasignación por el RM.
|
||||
* $SYNTAX$
|
||||
@@ -393,7 +395,7 @@
|
||||
*
|
||||
* NOTA: Esta función es reservada para el recolector de memoria (RM)
|
||||
* solamente. Esta NO debe ser llamada desde el código del usuario
|
||||
* llamarla puede causar resultados impredecibles (bloques de
|
||||
* llamarla puede causar resultados impredecibles (bloques de
|
||||
* memoria referenciados por el item pasado pueden ser liberados
|
||||
* prematuramente durante la recoleción de memoria más cercana).
|
||||
* $STATUS$
|
||||
@@ -414,7 +416,7 @@
|
||||
* $FUNCNAME$
|
||||
* HB_GCALL()
|
||||
* $CATEGORY$
|
||||
* Recolector de memoria
|
||||
* Recolector de memoria
|
||||
* $ONELINER$
|
||||
* Inspeciona la memoria y libera todos los bloques de memoria sin uso.
|
||||
* $SYNTAX$
|
||||
@@ -438,4 +440,3 @@
|
||||
* hb_gcCollectAll()
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
@@ -13,6 +16,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* HB_LANGSELECT()
|
||||
@@ -153,5 +157,3 @@
|
||||
* HB_LANGSELECT(),NATIONMSG()
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,95 +1,110 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
LICENCIA
|
||||
|
||||
Traducción: Alejandro de Gárate. <alex_degarate@hotmail.com>
|
||||
|
||||
Nota del traductor:
|
||||
Se encaró la traducción de la licencia de Harbour de su original
|
||||
en inglés al español, debido a que su comprensión podría aportar
|
||||
beneficios en los alcances del uso de Harbour y evitar algunos
|
||||
malentendidos ya sea para uso personal ó comercial.
|
||||
|
||||
Soy conciente que la presente traducción puede contener algún
|
||||
error u omisión, aunque he hecho los esfuerzos posibles para
|
||||
que ello no ocurra.
|
||||
|
||||
Para mayor información sobre que opina la FSF acerca de las
|
||||
traducciones de la GPL consulte:
|
||||
<http://gnu.org/copyleft/copyleft.es.html>
|
||||
|
||||
|
||||
Nota Previa al texto de la licencia: (requisito de la FSF)
|
||||
|
||||
This is an unofficial translation of the GNU General Public License
|
||||
into spanish. It was not published by the Free Software Foundation,
|
||||
and does not legally state the distribution terms for software that
|
||||
uses the GNU GPL--only the original English text of the GNU GPL does
|
||||
that. However, we hope that this translation will help spanish
|
||||
speakers understand the GNU GPL better.
|
||||
|
||||
Esta es una traducción no oficial de la Licencia Publica General GNU
|
||||
al español. No fue publicada por la Fundación de Software Libre, y
|
||||
no establece legalmente los términos de distribución para software
|
||||
que usa la GPL GNU--sólo el texto original en inglés de la GPL GNU
|
||||
lo hace. Sin embargo, esperamos que esta traducción ayude a gente de
|
||||
habla hispana a entender mejor la GNU GPL.
|
||||
|
||||
|
||||
|
||||
LICENCIA ACTUAL DEL PROYECTO HARBOUR
|
||||
====================================
|
||||
|
||||
(Actualizada al 10/06/2001)
|
||||
|
||||
"Este programa es software libre; Ud. puede redistribuirlo y/o
|
||||
modificarlo bajo los términos de la Licencia Pública General GNU
|
||||
como fué publicada por la Fundación de Software Libre; sea la
|
||||
versión 2 de la Licencia, ó (a su elección) alguna versión posterior.
|
||||
|
||||
Este programa es distribuido con la esperanza que le pueda ser útil,
|
||||
pero SIN NINGUNA GARANTIA; aún sin la garantía implícita de
|
||||
COMERCIALIZACION ó DESTINO PARA ALGÚN PROPÓSITO PARTICULAR.
|
||||
Consulte la License Pública General GNU para mayores detalles.
|
||||
|
||||
Ud. debería haber recibido una copia de la Licencia Pública General
|
||||
GNU junto con este programa; Vea el archivo COPYING. Si no, escriba
|
||||
a la Fundación de Software Libre:
|
||||
|
||||
Free Software Foundation, Inc.,
|
||||
59 Temple Place, Suite 330,
|
||||
Boston, MA 02111-1307 USA
|
||||
(ó visite su sitio Web en http://www.gnu.org/).
|
||||
|
||||
Como una especial excepción, el proyecto Harbour da permiso para
|
||||
usos adicionales del texto contenido en esta liberación de Harbour.
|
||||
|
||||
La excepción es que, si Ud. enlaza (link) la Librerías de Harbour
|
||||
con otros archivos para producir un ejecutable, esto por sí mismo
|
||||
no causa que el ejecutable resultante sea cubierto por la Licencia
|
||||
Pública General GNU.
|
||||
El uso de ese ejecutable por parte suya no esta en ninguna forma
|
||||
restringido, en cuenta del enlazado del código de librería de
|
||||
Harbour dentro de él.
|
||||
|
||||
Esta excepción sin embargo, no invalida algunas otras razones por
|
||||
las cuales el archivo ejecutable podría estar cubierto por la
|
||||
Licencia Pública General GNU.
|
||||
|
||||
Esta excepción se aplica: solamente al código liberado por el
|
||||
Proyecto Harbour bajo el nombre "Harbour". Si Ud. copia código
|
||||
desde otro Proyecto Harbour ó desde alguna liberación de la
|
||||
Fundación de Software Libre, dentro de una copia de Harbour, tal
|
||||
como la Licencia Pública General lo permite, la excepción no se
|
||||
aplica al código que Ud. agrega de esta forma. Para evitar engaños
|
||||
a alguien con el estado de estos archivos modificados, Ud. debe
|
||||
borrar el aviso de excepción de ellos.
|
||||
|
||||
Si Ud. escribe modificaciones de su propia creación para Harbour,
|
||||
es su elección, cuándo permitir que esta excepción se aplique a
|
||||
sus modificaciones.
|
||||
Si Ud. no desea eso, borre el aviso de excepción."
|
||||
|
||||
|
||||
fin del archivo es_licence.txt
|
||||
|
||||
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* License
|
||||
* $CATEGORY$
|
||||
* Document
|
||||
* $ONELINER$
|
||||
* Licencia Actual Del Proyecto Harbour
|
||||
* $DESCRIPTION$
|
||||
*
|
||||
* LICENCIA
|
||||
*
|
||||
* Traducción: Alejandro de Gárate. <alex_degarate@hotmail.com>
|
||||
*
|
||||
* Nota del traductor:
|
||||
* Se encaró la traducción de la licencia de Harbour de su original
|
||||
* en inglés al español, debido a que su comprensión podría aportar
|
||||
* beneficios en los alcances del uso de Harbour y evitar algunos
|
||||
* malentendidos ya sea para uso personal ó comercial.
|
||||
*
|
||||
* Soy conciente que la presente traducción puede contener algún
|
||||
* error u omisión, aunque he hecho los esfuerzos posibles para
|
||||
* que ello no ocurra.
|
||||
*
|
||||
* Para mayor información sobre que opina la FSF acerca de las
|
||||
* traducciones de la GPL consulte:
|
||||
* <http://gnu.org/copyleft/copyleft.es.html>
|
||||
*
|
||||
*
|
||||
* Nota Previa al texto de la licencia: (requisito de la FSF)
|
||||
*
|
||||
* This is an unofficial translation of the GNU General Public License
|
||||
* into spanish. It was not published by the Free Software Foundation,
|
||||
* and does not legally state the distribution terms for software that
|
||||
* uses the GNU GPL--only the original English text of the GNU GPL does
|
||||
* that. However, we hope that this translation will help spanish
|
||||
* speakers understand the GNU GPL better.
|
||||
*
|
||||
* Esta es una traducción no oficial de la Licencia Publica General GNU
|
||||
* al español. No fue publicada por la Fundación de Software Libre, y
|
||||
* no establece legalmente los términos de distribución para software
|
||||
* que usa la GPL GNU--sólo el texto original en inglés de la GPL GNU
|
||||
* lo hace. Sin embargo, esperamos que esta traducción ayude a gente de
|
||||
* habla hispana a entender mejor la GNU GPL.
|
||||
*
|
||||
*
|
||||
*
|
||||
* <b>LICENCIA ACTUAL DEL PROYECTO HARBOUR</b> </par>
|
||||
* ==================================== </par>
|
||||
*
|
||||
* (Actualizada al 10/06/2001)
|
||||
*
|
||||
* "Este programa es software libre; Ud. puede redistribuirlo y/o
|
||||
* modificarlo bajo los términos de la Licencia Pública General GNU
|
||||
* como fué publicada por la Fundación de Software Libre; sea la
|
||||
* versión 2 de la Licencia, ó (a su elección) alguna versión posterior.
|
||||
*
|
||||
* Este programa es distribuido con la esperanza que le pueda ser útil,
|
||||
* pero SIN NINGUNA GARANTIA; aún sin la garantía implícita de
|
||||
* COMERCIALIZACION ó DESTINO PARA ALGÚN PROPÓSITO PARTICULAR.
|
||||
* Consulte la License Pública General GNU para mayores detalles.
|
||||
*
|
||||
* Ud. debería haber recibido una copia de la Licencia Pública General
|
||||
* GNU junto con este programa; Vea el archivo COPYING. Si no, escriba
|
||||
* a la Fundación de Software Libre:
|
||||
*
|
||||
* Free Software Foundation, Inc.,
|
||||
* 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA
|
||||
* (ó visite su sitio Web en http://www.gnu.org/).
|
||||
*
|
||||
* Como una especial excepción, el proyecto Harbour da permiso para
|
||||
* usos adicionales del texto contenido en esta liberación de Harbour.
|
||||
*
|
||||
* La excepción es que, si Ud. enlaza (link) la Librerías de Harbour
|
||||
* con otros archivos para producir un ejecutable, esto por sí mismo
|
||||
* no causa que el ejecutable resultante sea cubierto por la Licencia
|
||||
* Pública General GNU.
|
||||
* El uso de ese ejecutable por parte suya no esta en ninguna forma
|
||||
* restringido, en cuenta del enlazado del código de librería de
|
||||
* Harbour dentro de él.
|
||||
*
|
||||
* Esta excepción sin embargo, no invalida algunas otras razones por
|
||||
* las cuales el archivo ejecutable podría estar cubierto por la
|
||||
* Licencia Pública General GNU.
|
||||
*
|
||||
* Esta excepción se aplica: solamente al código liberado por el
|
||||
* Proyecto Harbour bajo el nombre "Harbour". Si Ud. copia código
|
||||
* desde otro Proyecto Harbour ó desde alguna liberación de la
|
||||
* Fundación de Software Libre, dentro de una copia de Harbour, tal
|
||||
* como la Licencia Pública General lo permite, la excepción no se
|
||||
* aplica al código que Ud. agrega de esta forma. Para evitar engaños
|
||||
* a alguien con el estado de estos archivos modificados, Ud. debe
|
||||
* borrar el aviso de excepción de ellos.
|
||||
*
|
||||
* Si Ud. escribe modificaciones de su propia creación para Harbour,
|
||||
* es su elección, cuándo permitir que esta excepción se aplique a
|
||||
* sus modificaciones.
|
||||
* Si Ud. no desea eso, borre el aviso de excepción."
|
||||
*
|
||||
*
|
||||
* fin del archivo es_licence.txt
|
||||
*
|
||||
* $SEEALSO$
|
||||
* Overview
|
||||
* $END$
|
||||
*/
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||||
@@ -10,6 +13,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* MEMOTRAN()
|
||||
@@ -91,5 +95,3 @@
|
||||
* MEMOTRAN(),STRTRAN()
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user