2001-07-30 16:40 UTC+0300 Chen Kedem <niki@actcom.co.il>

This commit is contained in:
Chen Kedem
2001-07-30 13:39:30 +00:00
parent 928a660c0a
commit 83835de4ae
18 changed files with 599 additions and 517 deletions

View File

@@ -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()

View File

@@ -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$

View File

@@ -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

View File

@@ -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

View File

@@ -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$
*/

View File

@@ -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

View File

@@ -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$
*/

View File

@@ -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$
*/

View File

@@ -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

View File

@@ -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$
*/

View File

@@ -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$

View File

@@ -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$
*/

View File

@@ -1,3 +1,6 @@
/*
* $Id$
*/
/*
* Las siguientes partes son derechos adquiridos de sus autores individuales.
@@ -40,5 +43,3 @@
* ERRORBLOCK(),Error class
* $END$
*/

View File

@@ -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$

View File

@@ -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$
*/

View File

@@ -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$
*/

View File

@@ -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$
*/

View File

@@ -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$
*/