
























                            Manu Roibal Prieto
                        Sagastagoitia, 13 2§ B izq
                      Barakaldo 48903. Bizkaia. Spain.
               Voice phone 34-4-4992660 FAX/BBS 34-4-4605666























Printout of `FAST.lib 4.00 ¯ Referencia'
Printed by the Norton Guides Printer v2.0 (NGP.EXE).


                                 - Page 1 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 1, Tipos de Datos




    Aqu¡ muestro algunas funciones sencillas para manejar variables y
  tipos de datos. Espero que os guste.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ



 Conversiones

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    ASCIIToEBCDIC()

         Convierte una cadena ASCII a EBCDIC

    Sintaxis:

         ASCIIToEBCDIC( cString ) -> cNewString

         cString : La cadena a convertir

    Descripci¢n:

         Convierte una cadena ASCII a notaci¢n EBCDIC.

    Valor de Retorno:

         Una cadena nueva en notaci¢n EBCDIC.

    Ejemplo:

         ? ASCIIToEBCDIC( "Hello world" )

See Also: "EBCDICToASCII()" 


    Byte2Hex()

         Convierte un byte a una cadena hexadecimal

    Sintaxis:

         Byte2Hex ( cByte ) -> cHexadecimal

         cByte : Byte a convertir.

    Descripci¢n:

         Convierte un byte a una cadena hexadecimal.

                                 - Page 2 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Valor de Retorno:

         N£mero hexadecimal o NIL si cByte no es un caracter.

    Ejemplo:

         ? Byte2Hex ( "O" )             // "4F"

See Also: "Byte2Bin()" 


    Byte2Bin()

         Convierte un byte a una cadena binaria

    Sintaxis:

         Byte2Bin ( cByte ) -> cBinary

         cByte : Byte a convertir.

    Descripci¢n:

         Convierte un byte a una cadena binaria.

    Valor de Retorno:

         N£mero binario o NIL si cByte no es un caracter.

    Ejemplo:

         ? Byte2Hex ( "O" )             // "01001111"

See Also: "Byte2Hex()" 


    ByteAnd()

         Hace un And de dos bytes bit a bit

    Sintaxis:

         ByteAnd ( cByte1, cByte2 ) -> cNewByte

         cByte1 y cByte2 : Bytes para hacer el And.

    Descripci¢n:

         Hace un And entre los dos bytes especificados y devuelve el
         nuevo byte como resultado.

    Valor de Retorno:

         El byte resultante del And o NIL si cualquiera de los dos bytes

                                 - Page 3 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         de entrada no son de tipo caracter.

    Ejemplo:

         ? ByteAnd ( "O", "A" )

See Also: "ByteNot()" "ByteOr()" 


    ByteNot()

         Hace un Not del byte, bit a bit

    Sintaxis:

         ByteNot ( cByte ) -> cnewbyte

         cByte : Byte para hacer el Not.

    Descripci¢n:

         Hace un Not del byte especificado y devuelve el nuevo byte con
         el resultado.

    Valor de Retorno:

         El byte resultante del Not o NIL si cualquiera de los bytes de
         entrada no es de tipo caracter

    Ejemplo:

         ? ByteNot ( "O" )

See Also: "ByteAnd()" "ByteOr()" 


    ByteOr()

         Hace un Or de dos bytes bit a bit

    Sintaxis:

         ByteOr ( cByte1, cByte2 ) -> cnewbyte

         cByte1 y cByte2 : Bytes para hacer el Or.

    Descripci¢n:

         Hace un Or entre los dos bytes especificados y devuelve el
         nuevo byte con el resultado.

    Valor de Retorno:

         El resultado de Or o NIL si cualquiera de los dos bytes no
         es de tipo caracter.

                                 - Page 4 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Ejemplo:

         ? ByteOr ( "O", "A" )

See Also: "ByteAnd()" "ByteNot()" 


    Color2Num()

         Convierte una cadena de color en un color numerico

    Sintaxis:

         Color2Num ( cColor ) -> nColor

         cColor : El color en formato cadena

    Descripci¢n:

         Convierte un color en formato cadena en un formato num‚rico.
         Si el parametro de entrada es una cadena con mas de un color,
         el estilo "W/B, B/W...", es devuelto al valor num‚rico del
         primer elemento.

    Valor de Retorno:

         Tipo de color en formato num‚rico.

    Ejemplo:

         ? Color2Num ( "W+/B" )   //   31

See Also: "Num2Color()" 


    Dec2Bin()

         Convierte un n£mero decimal a una cadena binaria.

    Sintaxis:

         Dec2Bin ( nDec ) -> cBinary

         nDec : El n£mero decimal a convertir.

    Descripci¢n:

         Convierte un n£mero en base decimal a una cadena en base binario.

    Valor de Retorno:

         La cadena binaria.

    Ejemplo:

                                 - Page 5 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         ? Dec2Bin ( 10 )   //   "1010"

See Also: "Hex2Dec()" "Byte2Hex()" "Byte2Bin()" 


    DelBit()

         Desactiva un bit seleccionado de un byte

    Sintaxis:

         DelBit ( cByte, nBitPos ) -> cNewByte

         cByte   : Byte a desactivar.
         nBitPos : Posici¢n del bit dentro del byte.

    Descripci¢n:

         Pone a 0 un bit seleccionado de un byte y devuelve el nuevo byte.

    Valor de Retorno:

         Nuevo byte o NIL si cByte no es un caracter o nBitPos si no es
         num‚rico.

    Ejemplo:

         cNewByte := DelBit ( "C", 2 )

See Also: "IsBit()" "SetBit()" 


    EBCDICToASCII()

         Convierte una cadena EBCDIC a ASCII

    Sintaxis:

         EBCDICToASCII( cString ) -> cNewString

         cString : La cadena a convertir

    Descripci¢n:

         Convierte una cadena EBCDIC a notaci¢n ASCII.

    Valor de Retorno:

         Una nueva cadena en notaci¢n ASCII.

    Ejemplo:

         ? EBCDICToASCII( "Hello world" )


                                 - Page 6 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


See Also: "ASCIIToEBCDIC()" 


    Hex2Dec()

         Convierte una cadena hexadecimal a un n£mero decimal

    Sintaxis:

         Hex2Dec ( cHex ) -> nDec

         cHex : La cadena hexadecimal a convertir.

    Descripci¢n:

         Convierte una cadena en base hexadecimal a un entero en
         base decimal.

    Valor de Retorno:

         El entero decimal.

    Ejemplo:

         ? Hex2Dec ( "FA" )

See Also: "Dec2Bin()" "Byte2Hex()" "Byte2Bin()" 


    Inter()

         Intercambia dos variables

    Sintaxis:

         Inter( xVar1, xVar2 ) -> NIL

         xVar1 y xVar2 : Las variables a intercambiar

    Descripci¢n:

         Intercambia el valor de las variables, que tienen que ser indicadas
         de la misma forma que un array {}.

    Valor de Retorno:

         Nada.

    Ejemplo:

         cVar1 := "Hello"
         cVar2 := "Good bye"

         Inter( @cVar1, @cVar2 )
         ? cVar1                        // "Good bye"

                                 - Page 7 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         ? cVar2                        // "Hello"


    IsBit()

         Determina si el Bit es 1 o 0

    Sintaxis:

         IsBit ( cByte, nBitPos ) -> lIsOn

         cByte   : El byte a tratar.
         nBitPos : La posici¢n del bint dentro del byte.

    Descripci¢n:

         Devuelve un l¢gico indicando si el bit seleccionado dentro del
         del byte es 1 o 0.

    Valor de Retorno:

         Un l¢gico indicando la respuesta o NIL si cByte no es un
         caracter o si nBitPos no es num‚rico.

    Ejemplo:

         lEstaA_1 := IsBit ( "C", 2 )

See Also: "DelBit()" "SetBit()" 


    Num2Color()

         Convierte un color num‚rico a una cadena de color

    Sintaxis:

         Color2Num ( nColor ) -> cColor

         nColor : El color en formato num‚rico

    Descripci¢n:

         Convierte un color en formato num‚rico a formato de cadena. El
         color num‚rico tiene que ser un valor entre 0 y 255.

    Valor de Retorno:

         El color en formato cadena o NIL si el n£mero es mayor que 255
         o mas peque¤o que 0.

    Ejemplo:

         ? Num2Color ( 31 )   // "W+/B"


                                 - Page 8 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


See Also: "Color2Num()" 


    SetBit()

         Activa un bit seleccionado de un byte

    Sintaxis:

         SetBit ( cByte, nBitPos ) -> cNewByte

         cByte   : El byte a tratar.
         nBitPos : La posici¢n del bit dentro del byte.

    Descripci¢n:

         Pone a 1 un bit seleccionado de un byte devolviendo el nuevo byte

    Valor de Retorno:

         El nuevo byte o NIL si cByte no es un caracter o nBitPos si no es
         num‚rico.

    Ejemplo:

         cNewByte := SetBit ( "C", 2 )

See Also: "DelBit()" "IsBit()" 


    Purge()

         Purga el valor de una variable

    Sintaxis:

         Purge ( xVar ) -> xNewVar

         xVar : La variable a purgar

    Descripci¢n:

         Devuelve un valor del par metro purgado, es decir, si xVar es
         num‚rico, devuelve 0, si es caracter, devuelve espacios, si es
         fecha "  /  /  ", si es array {}.

    Valor de Retorno:

         El valor purgado.

    Ejemplo:

         cNew := Purge ( "Hello" )       // "    "
         cMax := Purge ( { "Hello" } )   // {}
         cMax := Purge ( 123 )           // 0

                                 - Page 9 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         cMax := Purge ( .T. )           // .F.



 Imperial y Metric

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    nAcre2Ha()

         Acres a hectareas

    Sintaxis:

         nAcre2Ha( nNumber ) -> nResul

         nNumber : es el valor en acres.

    Descripci¢n:

         Convierte un area de acres en hectareas.

    Valor de Retorno:

         El valor de nNumber convertido en hectareas.

    Ejemplo:

         ? nAcre2Ha( 5 )                        // 2.0234

See Also: "nHa2Acre()" 


    nAcre2M()

         Acres a metros

    Sintaxis:

         nAcre2M( nNumber ) -> nResul

         nNumber : es el valor en acres.

    Descripci¢n:

         Convierte un area de acres a metros.

    Valor de Retorno:

         El valor de nNumber convertido en metros.

    Ejemplo:

         ? nAcre2M( 5 )

                                 - Page 10 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



See Also: "nM2Acre()" 


    nCm2Inch()

         Cent¡mtros a pulgadas

    Sintaxis:

         nCm2Inch( nNumber ) -> nResul

         nNumber : es el valor en cent¡metros.

    Descripci¢n:

         Convierte una longitud de cent¡metros a pulgadas.

    Valor de Retorno:

         El valor de nNumber convertido en pulgadas.

    Ejemplo:

         ? nCm2Inch( 30 )                       // 11.811

See Also: "nInch2Cm()" 


    nCC2Inch()

         Cent¡metros c£bicos a pulgadas c£bicas

    Sintaxis:

         nCC2Inch( nNumber ) -> nResul

         nNumber : es el valor en cent¡metros c£bicos.

    Descripci¢n:

         Convierte un volumen de cent¡metros c£bicos a pulgadas c£bicas.

    Valor de Retorno:

         El valor de nNumber convertido a pulgadas c£bicas.

    Ejemplo:

         ? nCC2Inch( 25 )                       // 1.525

See Also: "nInch2CC()" 


    nCF2Ltr()

                                 - Page 11 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Pies c£bicos a litros

    Sintaxis:

         nCF2Ltr( nNumber ) -> nResul

         nNumber : es el valor en pies c£bicos.

    Descripci¢n:

         Convierte un volumen de pies c£bicos a litros.

    Valor de Retorno:

         El valor de nNumber convertido a litros.

    Ejemplo:

         ? nCF2Ltr( 2 )                         // 56.657

See Also: "nLtr2CF()" 


    nInch2CC()

         Pulgadas c£bicas a cent¡metros c£bicos

    Sintaxis:

         nInch2CC( nNumber ) -> nResul

         nNumber : es el valor en pulgadas c£bicas.

    Descripci¢n:

         Convierte un volumen de pulgadas c£bicas a cent¡metros c£bicos.

    Valor de Retorno:

         El valor de nNumber convertido a cent¡metros c£bicos.

    Ejemplo:

         ? nInch2CC( 3 )                        // 49.16

See Also: "nCC2Inch()" 


    nCm2CYd()

         Metros c£bicos a yardas c£bicas

    Sintaxis:


                                 - Page 12 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         nCm2CYd( nNumber ) -> nResul

         nNumber : es el valor en metros c£bicos.

    Descripci¢n:

         Convierte un volumen de metros c£bicos a yardas c£bicas.

    Valor de Retorno:

         El valor de nNumber convertido a yardas c£bicas.

    Ejemplo:

         ? nCm2CYd( 5 )                         // 6.54

See Also: "nCYd2Cm()" 


    nCYd2Cm()

         Yardas c£bicas a metros c£bicos

    Sintaxis:

         nCYd2Cm( nNumber ) -> nResul

         nNumber : es el valor en yardas c£bicas.

    Descripci¢n:

         Convierte un volumen en yardas c£bicas a metros c£bicos.

    Valor de Retorno:

         El valor de nNumber convertido en metros c£bicos.

    Ejemplo:

         ? nCYd2Cm( 7 )                         // 5.3522

See Also: "nCm2CYd()" 


    nGal2Ltr()

         Galones a litros

    Sintaxis:

         nGal2Ltr( nNumber ) -> nResul

         nNumber : es el valor en galones.

    Descripci¢n:

                                 - Page 13 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Convierte un volumen en galones a litros.

    Valor de Retorno:

         El valor de nNumber convertido a litros.

    Ejemplo:

         ? nGal2Ltr( 2 )                        // 9.0909

See Also: "nLtr2Gal()" 


    nGr2Oz()

         Gramos a onzas.

    Sintaxis:

         nGr2Oz( nNumber ) -> nResul

         nNumber : es el valor en gramos.

    Descripci¢n:

         Convierte un peso en gramos a onzas.

    Valor de Retorno:

         El valor de nNumber convertido en onzas.

    Ejemplo:

         ? nGr2Oz( 50 )                         // 1.765

See Also: "nOz2Gr()" 


    nHa2Acre()

         Hectareas a acres

    Sintaxis:

         nHa2Acre( nNumber ) -> nResul

         nNumber : es el valor en hectareas.

    Descripci¢n:

         Convierte un  rea de hectareas a acres.

    Valor de Retorno:


                                 - Page 14 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         El valor de nNumber convertido en acres.

    Ejemplo:

         ? nHa2Acre(5)                          // 12.3555

See Also: "nAcre2Ha()" 


    nInch2Cm()

         Pulgadas a cent¡metros

    Sintaxis:

         nInch2Cm( nNumber ) -> nResul

         nNumber : es el valor en pulgadas.

    Descripci¢n:

         Convierte una longitud en pulgadas a cent¡metros.

    Valor de Retorno:

         El valor de nNumber convertido a cent¡metros.

    Ejemplo:

         ? nInch2Cm( 12 )                      // 30.48

See Also: "nCm2Inch()" 


    nKg2Lb()

         Kilogramos a libras

    Sintaxis:

         nKg2Lb( nNumber ) -> nResul

         nNumber : es el valor en kilogramos.

    Descripci¢n:

         Convierte un peso en kilogramos a libras.

    Valor de Retorno:

         El valor de nNumber convertido a libras.

    Ejemplo:

         ? nKg2Lb(5)                            // 11.023

                                 - Page 15 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



See Also: "nLb2Kg()" 


    nLb2Kg()

         Libras a kilogramos

    Sintaxis:

         nLb2Kg( nNumber ) -> nResul

         nNumber : es el valor en libras.

    Descripci¢n:

         Convierte un peso en libras a kilogramos.

    Valor de Retorno:

         El valor de nNumber convertido a kilogramos.

    Ejemplo:

         ? nLb2Kg(4)                    // 1.8144

See Also: "nKg2Lb()" 


    nLtr2CF()

         Litros a pies c£bicos

    Sintaxis:

         nLtr2CF( nNumber ) -> nResul

         nNumber : es el valor en litros.

    Descripci¢n:

         Convierte un volumen en litros a pies c£bicos.

    Valor de Retorno:

         El valor de nNUmber convertido a pies c£bicos.

    Ejemplo:

         ? nLtr2CF( 50 )                        // 1.765

See Also: "nCF2Ltr()" 


    nLtr2Gal()

                                 - Page 16 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Litros a galones

    Sintaxis:

         nLtr2Gal( nNumber ) -> nResul

         nNumber : es el valor en litros.

    Descripci¢n:

         Convierte un volumen en litros a galones.

    Valor de Retorno:

         El valor de nNumber convertido a galones.

    Ejemplo:

         ? nLtr2Gal( 10 )                       // 2.2

See Also: "nGal2Ltr()" 


    nM2Acre()

         Metros a acres

    Sintaxis:

         nM2Acre( nNumber ) -> nResul

         nNumber : es el valor en metros.

    Descripci¢n:

         Convierte un area de metros a acres.

    Valor de Retorno:

         El valor de nNumber convertido a acres.

    Ejemplo:

         ? nM2Acre(5)

See Also: "nAcre2M()" 


    nMt2Yd()

         Metros a yardas

    Sintaxis:


                                 - Page 17 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         nMt2Yd( nNumber ) -> nResul

         nNumber : es el valor en metros.

    Descripci¢n:

         Convierte una longitud en metros a yardas.

    Valor de Retorno:

         El valor de nNumber convertido a yardas.

    Ejemplo:

         ? nMt2Yd( 8 )                          // 8.7488

See Also: "nYd2Mt()" 


    nOz2Gr()

         Onzas a gramos

    Sintaxis:

         nOz2Gr( nNumber ) -> nResul

         nNumber : es el valor en onzas.

    Descripci¢n:

         Convierte un peso en onzas a gramos.

    Valor de Retorno:

         El valor de nNumber convertido a gramos.

    Ejemplo:

         ? nOz2Gr( 4 )                          // 113.31

See Also: "nGr2Oz()" 


    nYd2Mt()

         Yardas a metros

    Sintaxis:

         nYd2Mt( nNumber ) -> nResul

         nNumber : es el valor en yardas.

    Descripci¢n:

                                 - Page 18 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Convierte una longitud en yardas a metros.

    Valor de Retorno:

         El valor de nNumber convertido a metros.

    Ejemplo:

         ? nYd2Mt( 5 )                          // 4.5721

See Also: "nMt2Yd()" 



 Array16

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    Add16()

         A¤ade un elemento en un array16

    Sintaxis:

         Add16 ( aArray, xValue ) -> NIL

         aArray : El array16 previamente creado
         xValue : El valor del nuevo elemento

    Descripci¢n:

         A¤ade un elemento al final de un array16 y lo inicializa
         con el valor xValue si este es especificado.

    Valor de Retorno:

         Nada.

    Ejemplo:

         a16 := New16 ( 15000, 0 )
         Add16 ( a16, 0 )          // a¤ade un nuevo elemento

See Also: "Get16()" "Len16()" "New16()" "Scan16()" "Set16()" 


    Get16()

         Devuelve un elemento de un array16

    Sintaxis:

         Get16 ( aArray, nPos ) -> NIL

                                 - Page 19 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         aArray : El array16 previamente creado
         nPos   : La posici¢n a devolver

    Descripci¢n:

         Devuelve el valor de la posici¢n de un array16. Si nPos no
         es especificado o si es mayor que el n£mero de elementos
         del array16, la funci¢n devuelve NIL.

    Valor de Retorno:

         El valor de la posici¢n especificada o NIL si nPos no es un
         par metro v lido.

    Ejemplo:

         a16 := New16 ( 15000, 0 )
         ? Get16 ( a16, 1 )          // Seguro que devuelve 0

See Also: "Add16()" "Len16()" "New16()" "Scan16()" "Set16()" 


    Len16()

         Devuelve la longitud de array16

    Sintaxis:

         Len16 ( aArray ) -> nLen

         aArray : El array16 previamente creado

    Descripci¢n:

         Devuelve la longitud o el n£mero de elementos de un array16.

    Valor de Retorno:

         El n£mero de elementos del array16.

    Ejemplo:

         a16 := New16 ( 15000, 0 )
         Add16 ( a16, 0 )
         ? Len16 ( a16 )          // 15001

See Also: "Add16()" "Get16()" "New16()" "Scan16()" "Set16()" 


bNew16()

         Crea una estructura de arrays con 16 millones de elementos

    Sintaxis:

                                 - Page 20 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         New16 ( nNumItems, xInit ) -> aArray

         nNumItems : El n£mero de elementos del array
         xInit     : El valor inicial de los elementos del array

    Descripci¢n:

         Crea una estructura de un nuevo tipo de datos que deseamos
         bautizar como array16 en honor de sus 16 millones de elementos.

         Actualmente, si la memoria disponible lo admite, lo cual dudo,
         podr¡amos obtener 16.777.216 elementos.

    Valor de Retorno:

         El array generado.

    Ejemplo:

         New16 ( 125000, 0 )  // crea un array de 125 elementos
                              // inicializados a 0

See Also: "Add16()" "Get16()" "Len16()" "Scan16()" "Set16()" 


    Scan16()

         Busca un elemento en un array16

    Sintaxis:

         Scan16 ( aArray, xSearch [, nStart] ) -> nPos

         aArray  : El array16 creado previamente
         xSearch : El valor a buscar dentro del array
         nStart  : El valor inicial de la posici¢n donde comenzar la
                   busqueda. Por defecto es el primer elemento

    Descripci¢n:

         Busca un elemento en un array16 y devuelve su posici¢n.

    Valor de Retorno:

         La posici¢n donde el elemento es encontrado o 0 si no se
         encuentra.

    Ejemplo:

         a16 := New16 ( 15000, 0 )
         Add16 ( a16, 1 )
         ? Len16 ( a16 )            // 15001
         ? Scan ( a16, 1 )          // Devuelve tambi‚n 15001


                                 - Page 21 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


See Also: "Add16()" "Get16()" "Len16()" "New16()" "Set16()" 


    Set16()

         Pone un valor en una posici¢n del array16

    Sintaxis:

         Set16 ( aArray, nPos, xValue ) -> NIL

         aArray : El array previamente creado
         nPos   : La posici¢n del array a modificar
         xValue : El nuevo valor de la posici¢n especificada

    Descripci¢n:

         Pone un valor a un elemento de un array16. El valor de nPos
         tiene que ser igual o menor que el n£mero de elementos del
         array16.

    Valor de Retorno:

         Nada.

    Ejemplo:

         a16 := New16 ( 15000, 0 )
         Set16 ( a16, 100, "Hello" )  // Ahora el elemento 100 es "hello"

See Also: "Add16()" "Get16()" "Len16()" "New16()" "Scan16()" 



 Array

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    aCar2Arr()

         Convierte una cadena o memo a un array

    Sintaxis:

         aCar2Arr ( cMemStr, cSep ) -> aArray

         cMemStr    : La cadena o memo a tratar
         cSep       : El elemento separador

    Descripci¢n:

         Convierte una cadena o meomo a un array utilizando un caracter
         como separador dentro de la cadena.


                                 - Page 22 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Valor de Retorno:

         El array generado.

    Ejemplo:

         aCar2Arr ( "Fast,Best", "," )     // { "Fast", "Best" }
         aCar2Arr ( "Best@Fast", "@" )     // { "Best", "Fast" }


    aMaxArr()

         Devuelve el valor m ximo de un array

    Sintaxis:

         aMaxArr ( aArray ) -> xMax

         aArray : El array a tratar

    Descripci¢n:

         Devuelve el valor m ximo de un array especificado por el tipo de
         datos. Si es un array caracter, devuelve la mayor cadena y si es
         un array num‚rico devuelve el mayor n£mero...

    Valor de Retorno:

         El valor m ximo o 0 si el array est  vac¡o

    Ejemplo:

         nMax := aMaxArr ( { 2, 3, 1, 9, 7 } )     // 9
         cMax := aMaxArr ( { "Good", "Bad" } )     // "Good"

See Also: "aMinArr()" 


    aMinArr()

         Devuelve el valor m¡nimo de un array

    Sintaxis:

         aMinArr ( aArray ) -> xMax

         aArray : El array a tratar

    Descripci¢n:

         Devuelve el valor m¡nimo de un array especificado por el tipo de
         datos. Si es un array caracter, devuelve la cadena m s peque¤a y
         si es un array num‚rico devuelve el n£mero m s peque¤o.

    Valor de Retorno:

                                 - Page 23 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         El valor m¡nimo o 0 si el array est  vac¡o.

    Ejemplo:

         nMax := aMinArr ( { 2, 3, 1, 9, 7 } )     // 1
         cMax := aMinArr ( { "Bad", "Good" } )     // "Bad"

See Also: "aMaxArr()" 


    aDimArr()

         Devuelve el n£mero de dimensiones de un array

    Sintaxis:

         aDimArr ( aArray ) -> nDim

         aArray : El array a tratar

    Descripci¢n:

         Devuelve el n£mero de dimensiones de un array. El array tiene que
         ser homog‚neo desde que usa la primera posici¢n para calcular las
         dimensiones.

    Valor de Retorno:

         Las dimensiones del array.

    Ejemplo:

         nMax := aDimArr ( { 2, 3, 1, 9, 7 } )          // 1
         nMax := aDimArr ( { { 12, 12 }, { 1, 1 } } )   // 2

See Also: "aMaxArr()" "aMinArr()" 


    RestArray()

         Recupera un fichero array

    Sintaxis:

         RestArray( cFile, @nError ) -> aArray

         cFile  : El fichero a recuperar
         nError : El c¢digo de error devuelto por DOS. 0 si no hay error.

    Descripci¢n:

         Recupera cualquier clase de dato de array excepto los objetos.

    Valor de Retorno:

                                 - Page 24 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         El array recuperado.

    Ejemplo:

         aArray := RestArray ( "Fast.arr", @nErr )
         If nErr == 0
           Message ( "Ok" )
         Else
           Message ( "DOS error number " + Str ( nErr ) )
         EndIf

See Also: "SaveArray()" 


    SaveArray()

         Salva un array a un fichero

    Sintaxis:

         SaveArray( aArray, cFile, @nError ) -> NIL

         aArray   : El array a salvar
         cFile    : El fichero a crear
         nError   : El c¢digo de error devuelto por DOS. 0 si no hay error.

    Descripci¢n:

         Salva cualquier clase de arry excepto el l¢gico para los objetos.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SaveArray( { 23, "Hello world", { 12, 32 } }, "Fast.arr", @nErr )
         If nErr == 0
           Message ( "Ok" )
         Else
           Message ( "DOS error number " + Str ( nErr ) )
         EndIf

See Also: "RestArray()" 



 Date

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    cGetMonth()


                                 - Page 25 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Devuelve el mes especificado.

    Sintaxis:

         cGetMonth( nMonth ) -> cMonth

         nMonth : El n£mero de mes de 1 a 12

    Descripci¢n:

         Devuelve el mes especificado en formato caracter.

    Valor de Retorno:

         El mes en modo caracter.

    Ejemplo:

         ? cGetMonth ( 4 )  // April en versi¢n internacional o
                            // Abril en versi¢n espa¤ola

See Also: "dToDMY()" "dAddMonth()" "lLeap()" 


    dToDMY()

         Convierte el tipo de dato Fecha a la cadena Dia/Mes/A¤o.

    Sintaxis:

         dToDMY( dDate ) -> cDate

         dDate : Fecha a evaluar.

    Descripci¢n:

         Devuelve una cadena con Dia/Mes/A¤o.

    Valor de Retorno:

         La fecha en formato cadena DD/MM/AA o DD/MM/AAAA.

    Ejemplo:

         ? dToDMY ( Date() )  // 31/01/1993

See Also: "cGetMonth()" "dAddMonth()" "lLeap()" "dToMDY()" 


    dToMDY()

         Convierte el tipo de dato Fecha a la cadena Mes/Dia/A¤o.

    Sintaxis:


                                 - Page 26 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         dToMDY( dDate ) -> cDate

         dDate : Fecha a evaluar.

    Descripci¢n:

         Devuelve una cadena con Mes/Dia/A¤o.

    Valor de Retorno:

         La fecha en formato cadena MM/DD/AA o MM/DD/AAAA.

    Ejemplo:

         ? dToMDY ( Date() )  // 01/31/1993

See Also: "cGetMonth()" "dAddMonth()" "lLeap()" "dToDMY()" 


    dAddMonth()

         A¤ade meses a la fecha y devuelve una nueva fecha

    Sintaxis:

         dAddMonth ( dDate, nMonths ) -> dNewDate

         dDate   : La fecha de comienzo.
         nMonths : El n£mero de meses a a¤adir.

    Descripci¢n:

         A¤ade nMonths a dDate y devuelve la nueva fecha.

    Valor de Retorno:

         La nueva fecha.

    Ejemplo:

         ? dAddMonth ( Date(), 8 )

See Also: "cGetMonth()" "dToDMY()" "lLeap()" 


    lLeap()

         Devuelve un l¢gico indicando si es un a¤o bisiesto

    Sintaxis:

         lLeap ( dDate ) -> lIsLeap

         dDate : La fecha para determinar si es un a¤o bisiesto o no.


                                 - Page 27 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Descripci¢n:

         El formato de _SET_FORMAT no afecta al resultado.

    Valor de Retorno:

         .T. si es bisiesto y .F. si no lo es.

    Ejemplo:

         ? lLeap ( Date() )

See Also: "cGetMonth()" "dToDMY()" "dAddMonth()" 


    FirstDay()

         Devuelve el primer d¡a del mes

    Sintaxis:

         FirstDay ( dDate ) -> dFirstDay

         dDate : La fecha cuyo mes va a ser procesado

    Descripci¢n:

         Devuelve la fecha del primer d¡a en la fecha especificada
         o el mes del sistema.

    Valor de Retorno:

         Primer d¡a de la fecha del mes.

    Ejemplo:

         ? FirstDay()                         // 01/03/93
         ? FirstDay( cTod ( "22/01/92" ) )    // 01/01/92

See Also: "LastDay()" 


    Sec2days()

         Convierte un n£mero de segundos a d¡as

    Sintaxis:

         Sec2days ( nSeconds ) -> nDays

         nSeconds : El n£mero de segundos a convertir

    Descripci¢n:

         Devuelve el n£mero especificado de segundos en d¡as.

                                 - Page 28 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Valor de Retorno:

         El n£mero de d¡as.

    Ejemplo:

         ? Sec2Days ( 90000 )           // 1


    LastDay()

         Devuelve el £ltimo d¡a del mes

    Sintaxis:

         LastDay ( dDate ) -> dLastDay

         dDate : La fecha cuyo mes tiene que ser tratado

    Descripci¢n:

         Devuelve el £ltimo d¡a especificado del mes.

    Valor de Retorno:

         La fecha del £ltimo d¡a del mes.

    Ejemplo:

         ? LastDay()                         // 31/03/93
         ? LastDay( cTod ( "22/01/92" ) )    // 31/01/92

See Also: "FirstDay()" 


    SToD()

         Convierte una cadena a fecha Clipper

    Sintaxis:

         SToD( cString ) -> dDate

         cString : La cadena a convertir

    Descripci¢n:

         Convierte una cadena a fecha Clipper.

    Valor de Retorno:

         Un valor fecha.

    Ejemplo:

                                 - Page 29 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         dDate := SToD( "19902103" )
         ? DToS( dDate )             // DToS() is a standard Clipper func.



 Time

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    TimeAMPM()

         Devuelve la hora en el formato am/pm

    Sintaxis:

         TimeAMPM() -> cTime

    Descripci¢n:

         Devuelve la hora del sistema en el formato 12 horas am/pm.

    Valor de Retorno:

         La cadena con la hora.

    Ejemplo:

         ? TimeAMPM()               //  "11:21:19 pm"


    Time2Time()

         Devuelve la diferencia entre dos horas

    Sintaxis:

         Time2Time ( cTime1, cTime2 ) -> cDifferentHour

         cTime1 : La primera hora o la hora de comienzo
         cTime2 : La segunda hora o la hora final

    Descripci¢n:

         cTime2 tiene que ser mayor que cTime1.

    Valor de Retorno:

         La diferencia entre ambas horas como una cadena.

    Ejemplo:

         ? Time2Time ( "22:12:12", "23:12:13" )  // "01:00:01"


                                 - Page 30 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'




 Numeric

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    CompNumber()

         Comprime y descomprime un n£mero Clipper

    Sintaxis:

         CompNumber( xValue, lMode, nSize, nDecimals ) -> cCompress|nValue

         xValue    : El n£mero a comprimir si lMode es .T. o el string a
                     descomprimir como n£mero si lMode es .F.
         lMode     : .T. para comprimir y .F. para descomprimir
         nSize     : El tama¤o del n£mero. Por defecto 10 d¡gitos.
         nDecimals : El n£mero de decimales. Por defecto 0.

    Descripci¢n:

         Comprime un n£mero clipper devolviendo un string cuya longitud es
         la mitad del n£mero original.
         Es ideal para ahorrar espacio en las bases de datos.

    Valor de Retorno:

         Un string con el n£mero comprimido si lMode es .T. o el n£mero
         descomprimido si lMode es .F.

    Ejemplo:

         nNumber := 9876543210
         ? LEN( STR( nNumber ) )                // 10
         ? LEN( CompNumber( nNumber ) )         // 5


    Cos()

         Calcula un n£mero coseno

    Sintaxis:

         Cos( nNumber ) -> nCos

         nNumber : El n£mero a calcular el coseno

    Descripci¢n:

         Calcula un n£mero coseno con un m‚todo num‚rico.

         Atenci¢n!!
         El n£mero tiene que ser en radianes, no en grados.

                                 - Page 31 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Valor de Retorno:

         El n£mero coseno especificado o NIL si el n£mero no se
         especifica.

    Ejemplo:

         Cos( 0 )    //  1.00

See Also: "Deg2Rad()" "NumPi()" "Rad2Deg()" "Sin()" 


    CoSec()

         Calcula un n£mero cosecante

    Sintaxis:

         CoSec( nNumber ) -> nCoSec

         nNumber : El n£mero del cual calcular la cosecante

    Descripci¢n:

         Calcula un n£mero cosecante con un m‚todo num‚rico.

         Atenci¢n!!
         El n£mero tiene que ser en radianes, no en grados.

    Valor de Retorno:

         El n£mero cosecante especificado o NIL si el n£mero no se
         especifica.

    Ejemplo:

         CoSec( 0 )             // 1.00

See Also: "Cos()" "Deg2Rad()" "NumPi()" "Rad2Deg()" 


    CoTec()

         Calcula un n£mero cotangente

    Sintaxis:

         CoTan( nNumber ) -> nCoTan

         nNumber : El n£mero del cual calcular la cotangente

    Descripci¢n:

         Calcula el n£mero cotangente con un m‚todo num‚rico.

                                 - Page 32 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Atenci¢n!!
         El n£mero tiene que ser en radianes, no en grados.

    Valor de Retorno:

         El n£mero cotangente especificado o NIL si el n£mero no es
         especificado.

    Ejemplo:

         CoTan( Deg2Rad ( 45 ) )         // 1.00

See Also: "Cos()" "Deg2Rad()" "NumPi()" "Rad2Deg()" "Sin()" 


    Deg2Rad()

         Convierte de grados a radianes

    Sintaxis:

         Deg2Rad( nDegree ) -> nRadian

         nDegree : El n£mero en grados a convertir

    Descripci¢n:

         Esta funci¢n convierte un valor num‚rico que especifica un angulo
         de grados a radianes.

    Valor de Retorno:

         El n£mero convertido a radianes o NIL si el n£mero no es
         especificado.

    Ejemplo:

         Deg2Rad( 180 )    //  3.141592

See Also: "Cos()" "NumPi()" "Rad2Deg()" "Sin()" 


    Exponent()

         Eleva un n£mero a una potencia dada

    Sintaxis:

         Exponent( nNumber, nExponent ) -> nNewNumber

         nNumber   : El n£mero a elevar.
         nExponent : La potencia a la que se elevar  el n£mero.

    Descripci¢n:

                                 - Page 33 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Eleva un n£mero dado a una potencia dada. La potencia por
         defecto es dos.

    Valor de Retorno:

         El n£mero elevado.

    Ejemplo:

         Exponent( 10, 3 )    //  1000
         Exponent( 10 )       //  100

See Also: "Factorial()" "Sum()" 


    Factorial()

         Devuelve un n£mero factorial

    Sintaxis:

         Factorial( nNumber ) -> nFactorial

         nNumber : El n£mero del cual calcular el factorial.

    Descripci¢n:

         Calcula un n£mero factorial que tiene que ser 0 o mayor que 0.

    Valor de Retorno:

         El n£mero factorial especificado o NIL si el n£mero es negativo.

    Ejemplo:

         Factorial( 4 )    //  24

See Also: "Exponent()" "Sum()" 


    Int2Roman()

         Convierte un entero a notaci¢n romana

    Sintaxis:

         Int2Roman( nNumber ) -> cRomanNumber

         nNumber : El n£mero a convertir

    Descripci¢n:

         Convierte un entero a notaci¢n romana. El n£mero debe ser positivo.


                                 - Page 34 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Valor de Retorno:

         Una cadena con el n£mero en notaci¢n romana.

    Ejemplo:

         Int2Roman( 1217 )    //  "MCCXVII"


    Log10()

         Devuelve un logaritmo en base 10

    Sintaxis:

         Log10( nNumber ) -> nLogNumber

         nNumber : El n£mero del cual calcular el logaritmo.

    Descripci¢n:

         Devuelve un logaritmo en base 10 calculado con el uso de
         logaritmos naturales.

    Valor de Retorno:

         El logaritmo en base 10 o NIL si el n£mero es negativo.

    Ejemplo:

         Log10( 10 )    //  1

See Also: "LogX()" 


    LogX()

         Devuelve el logaritmo en cualquier base

    Sintaxis:

         LogX( nNumber, nBase ) -> nLogNumber

         nNumber : El n£mero del cual calcular el logaritmo.
         nBase   : La base del logaritmo.

    Descripci¢n:

         Devuelve el logaritmo en la base especificada.

         Vea la funci¢n Log10(). Es una funci¢n separada ya que se
         utiliza frecuentemente base 10.

    Valor de Retorno:


                                 - Page 35 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         El logaritmo en la base especificada o NIL si el n£mero es
         negativo.

    Ejemplo:

         LogX( 10, 10 )    //  1

See Also: "Log10()" 


    nRandom()

         Genera un n£mero aleatorio

    Sintaxis:

         nRandom ( nMax ) -> nNumber

         nMax : El valor m ximo que puede tomar el n£mero.

    Descripci¢n:

         Genera un n£mero aleatorio entre 0 y el n£mero maximo especificado
         menos 1.
         Si lo desea, un n£mero aleatorio entre, por ejemplo, 2 y 5,
         deber¡a utilizar algo como esto: nVar := 2 + nRandom ( 3 )

    Valor de Retorno:

         El n£mero aleatorio generado.

    Ejemplo:

         nRandom ( 100 )                // cualquier n£mero entre 0-99


    NumE()

         Devuelve el n£mero E

    Sintaxis:

         NumE() -> nNumber

    Descripci¢n:

         Devuelve el n£mero E, el cual puede ser muy valioso en c lculos
         estad¡sticos y otras  reas de matem ticas y an lisis num‚rico.

    Valor de Retorno:

         El n£mero E.

    Ejemplo:


                                 - Page 36 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         NumE()    //  2.7183

See Also: "NumPi()" 


    NumPi()

         Devuelve el n£mero PI

    Sintaxis:

         NumPi() -> nNumber

    Descripci¢n:

         Deuelve el n£mero PI, el cual puede ser muy valioso en c lculos
         los estad¡sticos y otras  reas de matem ticas y an lisis num‚rico.

    Valor de Retorno:

         El n£mero PI.

    Ejemplo:

         NumPi()    //  3.141592

See Also: "NumE()" 


    Rad2Deg()

         Convierte radianes a grados

    Sintaxis:

         Rad2Deg( nRadian ) -> nDegree

         nRadian : El n£mero radian a convertir

    Descripci¢n:

         Esta funci¢n convierte un valor num‚rico el cual especifica un
          ngulo radian a grados.

    Valor de Retorno:

         El n£mero convertido a grados o NIL si el n£mero no es
         especificado.

    Ejemplo:

         Rad2Deg( NumPi() )    //  180.00

See Also: "Deg2Rad()" "Cos()" "NumPi()" "Sin()" 


                                 - Page 37 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Sum()

         Devuelve la suma de un n£mero

    Sintaxis:

         Sum( nNumber ) -> nSummation

         nNumber : El n£mero del cual se calcula la suma.

    Descripci¢n:

         Calcula la suma de un n£mero que tiene que ser 0 o mayor
         que 0.

    Valor de Retorno:

         La suma de un n£mero especificado o NIL si el n£mero es
         negativo.

    Ejemplo:

         Sum( 4 )    //  10

See Also: "Exponent()" "Factorial()" 


    Sec()

         Calcula un n£mero secante

    Sintaxis:

         Sec( nNumber ) -> nSec

         nNumber : El n£mero del cual calcular la secante

    Descripci¢n:

         Calcula un n£mero secante con un m‚todo num‚rico.

         Atenci¢n!!
         El n£mero tiene que ser en radianes, no en grados.

    Valor de Retorno:

         El n£mero secante especificado o NIL si el n£mero no es
         especificado.

    Ejemplo:

         Sec( Deg2Rad ( 90 ) )         // 1.00

See Also: "Deg2Rad()" "NumPi()" "Rad2Deg()" "Sin()" 

                                 - Page 38 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'




    Sin()

         Calcula un n£mero seno

    Sintaxis:

         Sin( nNumber ) -> nSin

         nNumber : El n£mero del cual calcular el seno

    Descripci¢n:

         Calcula un n£mero seno con un m‚todo num‚rico.

         Atecni¢n!!
         El n£mero tiene que ser en radianes, no en grados.

    Valor de Retorno:

         El n£mero seno especificado o NIL si el n£mero no es
         especificado.

    Ejemplo:

         Sin( NumPi() / 2 )    // 1.00

See Also: "Deg2Rad()" "Cos()" "NumPi()" "Rad2Deg()" 


    Tan()

         Calcula un n£mero tangente

    Sintaxis:

         Tan( nNumber ) -> nTan

         nNumber : El n£mero del cual calcular la tengente

    Descripci¢n:

         Calcula un n£mero tangente con un m‚todo num‚rico.

         Atenci¢n!!
         El n£mero tiene que ser en radianes, no en grados.

    Valor de Retorno:

         El n£mero tangente especificado o NIL si el n£mero no es
         especificado.

    Ejemplo:


                                 - Page 39 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Sec( Deg2Rad ( 45 ) )         // 1.00

See Also: "Cos()" "Deg2Rad()" "NumPi()" "Rad2Deg()" "Sin()" 



 String

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    AsciiAdd()

         Suma o resta todos los elementos de una cadena

    Sintaxis:

         AsciiAdd( cString, nAdds ) -> cNewString

         cString : La cadena a manejar
         nAdds   : El n£mero a sumar

    Descripci¢n:

         Suma o resta todos los elementos de una cadena y devuelve una
         nueva cadena.

    Valor de Retorno:

         La nueva cadena.

    Ejemplo:

         ? AsciiAdd( "0123456789", 1 )      //  "123456789:"
         ? AsciiAdd( "0123456789", -1 )     //  "/012345678"

See Also: "AsciiSum()" 


    AsciiSum()

         Suma todos los elementos de una cadena

    Sintaxis:

         AsciiSum( cString ) -> nAdds

         cString : La cadena a manejar

    Descripci¢n:

         Suma todos los valores ascii de una cadena.

    Valor de Retorno:


                                 - Page 40 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         La suma de todos los valores ascii.

    Ejemplo:

         ? AsciiSum( "AB" )             // 131

See Also: "AsciiAdd()" 


    At2()

         Busca un n£mero de casos en una cadena

    Sintaxis:

         At2( cSearch, cTarget [, nOcur] ) -> nPos

         cSearch : El caracter de la subcadena a buscar
         cTarget : El caracter de la cadena a buscar
         nOcur   : N£mero de casos, por defecto es 1

    Descripci¢n:

         Los par metros son los mismo que AT() del la librer¡a
         standard Clipper.lib excepto para nOcur que indica el n£mero
         de casos a devolver. Por defecto nOcur es 1. La funci¢n es
         sensitiva a may£sculas/min£sculas.

    Valor de Retorno:

         Lo mismo que AT().

    Ejemplo:

         ? At2 ( "a", "Manu Roibal" )      //  2
         ? At2 ( "a", "Manu Roibal", 2 )   // 10
         ? At2 ( "a", "Manu RoibAl", 2 )   // 0


    aToken()

         Devuelve un array de palabras de una cadena

    Sintaxis:

         aToken( cString [, cSepara] ) -> aWords

         cString : La cadena a tratar
         cSepara : Una cadena con separadores de palabra v lidos. Por
                   defecto ,;:. ?¨­!()&/*+-%[]{}"

    Descripci¢n:

         Trata una cadena como si fuese una frase, creando un array de
         palabras contenidas en la cadena. Puede ser util para analizar

                                 - Page 41 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         sint cticamente, pseudo-compiladores...

    Valor de Retorno:

         Un array de palabras.

    Ejemplo:

         aArray := aToken ( "Fast Library For Clipper" )
         For nInd := 1 To Len ( aArray )
           ? aArray[ nInd ]
         Next

See Also: "NumToken()" "Token()" 


    Capital()

         Convierte la primera letra en may£sculas

    Sintaxis:

         Capital( cString ) -> cNewString

         cString : La cadena a convertir

    Descripci¢n:

         Convierte toda la cadena de letras en min£sculas excepto la
         primera letra de cada palabra las cuales son en may£sculas.
         Respeta espacios en la izquierda y en la derecha.

    Valor de Retorno:

         The capitalized a string.

    Ejemplo:

         ? Capital ( " manu ROIBAL " )   // " Manu Roibal "


    CharEven()

         Devuelve una cadena con los bytes pares de otra cadena

    Sintaxis:

         CharEven( cString ) -> cNew

         cString : La cadena a manejar

    Descripci¢n:

         Devuelve una cadena con el bytes pares de la cadena especificada.


                                 - Page 42 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Valor de Retorno:

         La nueva cadena.

    Ejemplo:

         ? CharEven( "1234567890" )   // "24680"

See Also: "CharMix()" "CharOdd()" 


    CharMix()

         Mezcla dos cadenas y genera otrar

    Sintaxis:

         CharMix( cStrEven, cStrOdd ) -> cNew

         cStrEven : La primera cadena a manejar
         cStrOdd  : La segunda cadena a manejar

    Descripci¢n:

         Mezcla dos cadenas especificadas y genera otra cadena.

    Valor de Retorno:

         La nueva cadena.

    Ejemplo:

         ? CharMix( "02468", "13579" )   // "0123456789"

See Also: "CharEven()" "CharOdd()" 


    CharOdd()

         Devuelve una cadena con los bytes impares de otra cadena

    Sintaxis:

         CharOdd( cString ) -> cNew

         cString : La cadena a manejar

    Descripci¢n:

         Devuelve una cadena con los bytes impares de la cadena
         especificada.

    Valor de Retorno:

         La nueva cadena.

                                 - Page 43 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Ejemplo:

         ? CharOdd( "1234567890" )   // "13579"

See Also: "CharEven()" "CharMix()" 


    Expand()

         Expande una cadena

    Sintaxis:

         Expand( cString [, cExpand] ) -> cNewString

         cCadena : La cadena a expandir
         cExpand : El caracter con el que expandir

    Descripci¢n:

         Expande cString con cExpand siendo colocado entre cada
         caracter de cString. El valor por defecto de cExpand es
         un espacio en blanco.

    Valor de Retorno:

         La cadena expandida.

    Ejemplo:

         ? Expand ( "Itxaso", "*" )            // I*t*x*a*s*o
         ? Expand ( "itxaso" )                 // i t x a s o
         ? Expand ( "Itxaso", "* *" )          // I* *t* *x* *a* *s* *o


    Like()

         Compara dos cadenas utilizando comodines

    Sintaxis:

         Like( cMask, cString ) -> lEqual

         cMask   : Una cadena puede contener los comodines * y ?
         cString : La otra cadena a compara

    Descripci¢n:

         Compara dos cadenas con comodines a una posici¢n (?)
         o comodines a n posiciones (*).

         La funci¢n es sensitiva.

    Valor de Retorno:

                                 - Page 44 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Un l¢gico indicando si la cadena es parecida o no.

    Ejemplo:

         ? Like ( "*A*",  "Fast" )          // .F.
         ? Like ( "*a*",  "Fast" )          // .T.
         ? Like ( "?ast", "Fast" )          // .T.


    NumToken()

         Devuelve el n£mero de palabras de una cadena

    Sintaxis:

         NumToken( cString [, cSepara] ) -> nWords

         cString : La cadena a tratar
         cSepara : Una cadena con separadores de palabras v lidos.
                   Por defecto ,;:. ?¨­!()&/*+-%[]{}"


    Descripci¢n:

         Trata una cadena como si fuese una frase determinando el n£mero
         de palabras.

         Puede ser muy util para analizar sint cticamente, pseudocompilers...

    Valor de Retorno:

         El n£mero de palabras.

    Ejemplo:

         ? NumToken ( "Fast Library For Clipper" )

See Also: "aToken()" "Token()" 


    Occurs()

         Busca un n£mero de casos en una cadena

    Sintaxis:

         Occurs( cString, cSearch ) -> nTimes

         cString : La cadena donde buscar
         cSearch : La subcadena a buscar en cString

    Descripci¢n:

         Devuelve el n£mero de veces que cSearch existe en cString.

                                 - Page 45 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         La funci¢n es Sensitiva.

    Valor de Retorno:

         El n£mero de veces que cSearch existe en cString.

    Ejemplo:

         ? Occurs ( "Manu Roibal", "j" )   //  0
         ? Occurs ( "Manu Roibal", "A" )   //  0
         ? Occurs ( "Manu Roibal", "a" )   //  2


    StrGetCar()

         Devuelve un caracter de una cadena

    Sintaxis:

         StrGetCar( cString, nPos ) -> nChar

         cString : La cadena a tratar
         nPos    : La posici¢n de la cadena a devolver

    Descripci¢n:

         Devuelve el valor ASCII del caracter en la posici¢n
         especificada dentro de la cadena.

         Esta funci¢n, en conjunci¢n con StrSetCar() puede ser muy
         util cuando una cadena es tratada en C como si fuesen
         arrays caracter.

    Valor de Retorno:

         El valor del caracter ASCII.

    Ejemplo:

         ? StrGetCar ( "Hello World", 1 )      //  72
         ? StrGetCar ( "Hello world", 0 )      //  NIL
         ? StrGetCar ( "Hello world", 5 )      //  32

See Also: "StrSetCar()" 


    StrSetCar()

         Modifica un caracter en una cadena

    Sintaxis:

         StrSetCar( cString, nPos, nChar ) -> cNewString


                                 - Page 46 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         cString : La cadena a tratar
         nPos    : La posici¢n de la cadena a modificar
         nChar   : El nuevo caracter para reemplazar

    Descripci¢n:

         Modifica una cadena en la posici¢n especificada y devuelve la
         nueva cadena.

         Esta funci¢n, en conjunci¢n con StrSetCar() puede ser muy
         util cuando una cadena es tratada en C como si fuesen
         arrays caracter.

    Valor de Retorno:

         La cadena modificada.

    Ejemplo:

         ? StrSetCar ( "Hello world", 1, 32 )   //  " Hello world"
         ? StrSetCar ( "Hello world", 0, 35 )   //  "Hello world"
         ? StrSetCar ( "Hello world", 7, 85 )   //  "Hello world"

See Also: "StrGetCar()" 


    Token()

         Devuelve una palabra delimitada en un string

    Sintaxis:

         Token( cString, [cSepara], [nWord] ) -> cWord

         cString : La cadena a tratar
         cSepara : Una cadena con separadores v lidos. Por defecto
                   ,;:. ?¨­!()&/*+-%[]{}"
         nWord   : El n£mero de palabra a devolver. Por defecto 1.

    Descripci¢n:

         Trata una cadena como si fuese una frase determinando una
         palabra especificada de la cadena.

    Valor de Retorno:

         La palabra especificada o "" si el n£mero de la palabra es
         mayor que el m ximo n£mero de palabras en la frase.

    Ejemplo:

         ? Token ( "Fast Library For Clipper", , 2 )    // "Library"

See Also: "aToken()" "NumToken()" 


                                 - Page 47 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'




 Stack

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    StackEmpty()

         Determina si la pila est  vac¡a

    Sintaxis:

         StackEmpty( aStack ) -> lEmpty

         aStack : La pila creada con StackNew()

    Descripci¢n:

         Devuelve un l¢gico indicando si la pila est  vac¡a.

    Valor de Retorno:

         .T. si est  vac¡o y .F. si tiene alg£n elemento.

    Ejemplo:

         aStack := StackNew ()
         StackPush ( aStack, "hello matthew" )
         If StackEmpty ( aStack )
           ...

See Also: "StackHead()" "StackNew()" "StackPop()" "StackPush()" 


    StackHead()

         Devuelve el tope de la pila FIFO

    Sintaxis:

         StackHead( aStack ) -> xHeadValue

         aStack : La pila creada con StackNew()

    Descripci¢n:

         Devuelve el valor del tope de la pila, es decir, el £ltimo
         valor introducido, sin borrarlo de la pila.

    Valor de Retorno:

         El valor tope de la pila.

    Ejemplo:

                                 - Page 48 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         aStack  := StackNew ()
         StackPush ( aStack, "hello world" )
         ? StackHead( aStack )            // "hello world"

See Also: "StackNew()" "StackPop()" "StackPush()" "StackEmpty()" 


    StackNew()

         Crea una pila de tipo FIFO

    Sintaxis:

         StackNew() -> aNewStack

    Descripci¢n:

         Crea una pila de tipo FIFO vac¡a.
         Recuerde FIFO (First In First Out)

    Valor de Retorno:

         La pila creada.

    Ejemplo:

         aStack := StackNew()

See Also: "StackHead()" "StackPop()" "StackPush()" "StackEmpty()" 


    StackPop()

         Borra un elemento de la pila

    Sintaxis:

         StackPop( aStack ) -> xOldHead

         aStack : La pila creada con StackNew()

    Descripci¢n:

         Borra un elemento de la pila y devuelve el valor de ese
         elemento.

    Valor de Retorno:

         El valor antiguo de la cabeza de la pila.

    Ejemplo:

         aStack  := StackNew ()
         StackPush ( aStack, "hello world" )

                                 - Page 49 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         StackPush ( aStack, "Bye bye" )
         ? StackPop ( aStack )           // "Bye bye"
         ? StackHead( aStack )           // "hello world"

See Also: "StackHead()" "StackNew()" "StackPush()" "StackEmpty()" 


    StackPush()

         Introduce un elemento en la pila

    Sintaxis:

         StackPush( aStack, xValue ) -> NIL

         aStack : La pila creada con StackNew()
         xValue : El nuevo valor a introducir en la pila

    Descripci¢n:

         Introduce un nuevo elemento en la pila y lo coloca como cabeza
         de pila.

    Valor de Retorno:

         Nada.

    Ejemplo:

         aStack := StackNew ()
         StackPush ( aStack, "hello world" )
         StackPush ( aStack, "bye" )
         ? StackHead( aStack )            // "bye"

See Also: "StackHead()" "StackNew()" "StackPop()" "StackEmpty()" 




















                                 - Page 50 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 1, Dbf/Memo




    En respuesta a algunos usuarios abr¢ una nueva secci¢n en FASt.lib. En
 secci¢n ir‚ colleccionando funciones para el manejo de bases de datos y
 campos memo.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    Gather()

         Inicializa un registro con la informaci¢n de un array

    Sintaxis:

         Gather( aArray ) -> NIL

         aArray : Un array con la informaci¢n

    Descripci¢n:

         Inicializa un registro con la informaci¢n de un array que deber¡a
         haber sido generado previamente con la funci¢n Scatter().
         La base de datos que se actualiza ser  la work area por defecto.
         Est  work area debe est r abierta.

    Valor de Retorno:

         Nada.

    Ejemplo:

         use sold new
         dbGoBotton()
         aArray := Scatter ()
         aArray [ 1 ] := "mateo"
         Gather ( aArray )

See Also: "Scatter()" 


    HaveDbt()

         Indica si el Dbf tiene un Dbt

    Sintaxis:

         HaveDbt( cDbf ) -> lTiene

         cDbf : El nombre de el Dbf a ser verificado

    Descripci¢n:

                                 - Page 51 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Indica si el Dbf especificado tiene un Dbt asociado, es decir, si
         tiene alg£n campo memo.
         El nombre del fichero debe darse con path completo y extensi¢n.

    Valor de Retorno:

         .T. si tiene campos memo .F. si no los tiene

    Ejemplo:

         ? HaveDbt( "Fast.dbf" )


    Scatter()

         Retorna un array con la informaci¢n de un registro

    Sintaxis:

         Scatter() -> aArray

    Descripci¢n:

         Retorna un array con la informaci¢n de un registro
         La base de datos a la que se accede ser  la work area por defecto.
         Est  work area debe est r abierta.

    Valor de Retorno:

         Un array con la misma estructura que la base de datos cargado con
         los valores del registro en curso.

    Ejemplo:

         use clients new
         aArray := Scatter ()
         aArray [ 1 ] := "Jose"
         Gather ( aArray )

See Also: "Gather()" 














                                 - Page 52 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 1, Disco y Ficheros




    Las siguientes funciones permiten centralizar todos los accesos a uno o
 m s ficheros binarios en Clipper.

    Estas funciones controlan todos los errores que pudieran producirse en
 un programa Clipper cuando accede a ficheros binarios, como pudiera ser que
 el fichero no exista, intentar acceder a un fichero sin bloquearlo.

    Igualmente, podr  olvidarse de los errores de I/O dado que todas las
 funciones de acceso a fichero reintentan la operaci¢n e informan al usuario
 caso de haber alg£n error.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    ArjFile()

         Retorna el contenido de un fichero ARJ

    Sintaxis:

         ArjFile ( cFile ) -> aARJ

         cFile : El nombre del fichero ARJ

    Descripci¢n:

         Retorna un array bidimensional con la informaci¢n sobre el contenido
         del fichero ARJ.

         El subarray tiene la siguiente estructura:

         {
           { cNombre, nCompr, nTama¤o, nRatio, dFecha, cHora }
           ...
           { cNombre, nCompr, nTama¤o, nRatio, dFecha, cHora }
         }

         cNombre        El nombre del fichero
         nTama¤o        El tama¤o real del fichero
         nCompr         El tama¤o comprimido
         nRatio         Ratio de compresi¢n
         dFecha         Fecha del fichero
         cHora          Hora del fichero

    Valor de Retorno:

         Un array con la informaci¢n sobre el contenido de un fichero ARJ.

    Ejemplo:


                                 - Page 53 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         aARJ := ArjFile ( "C:\FastLib\Fast.Arj" )
         For nInd := 1 To Len ( aARJ )
           For nOther := 1 To Len ( aARJ [ nInd ] )
             ? aARJ [ nInd, nOther ]
           Next
         Next

See Also: "ZipFile()" 


    ClipperPath()

         Retorna el Path de Clipper

    Sintaxis:

         ClipperPath() -> cPath

    Descripci¢n:

         Retorna un string con el Path de Clipper.

    Valor de Retorno:

         El Path de Clipper.

    Ejemplo:

         ? ClipperPath () // C:\DATA;

See Also: "DOSPath()" 


    Clp2WKS()

         Convierte un array de Clipper en un fichero WKS de Lotus

    Sintaxis:

         Clp2WKS( cFile, aSheet ) -> NIL

         cFile  : El fichero a crear
         aSheet : Un array Clipper con la hoja de c lculo

    Descripci¢n:

         Convierte un array Clipper en un fichero WKS de Lotus creando el
         nuevo fichero con extensi¢n .WKS.

    Valor de Retorno:

         Nada.

    Ejemplo:


                                 - Page 54 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         FUNCTION Example()
         LOCAL aWorkSheet:={ ;
                           { "Column 1", "Column 2", "Column 3" }, ;
                           { 1991,  156,  625, 887,  123, 178   }, ;
                           { 1992,  161,   75,  72,  124        }, ;
                           { 1993,  711, -918, 716,  122        }, ;
                           { 1994, 1932, 1827, 998              }, ;
                           { 1995,  154,   12,  12, 9912        }, ;
                           { 1996,  612,   15,   3, 1921, 122   }, ;
                           { 1997, 18.4,  0.1,   1              }, ;
                           { 1998, 1213,  121, 121, 2121, 121   } }
             Clp2Wks( "DEMO", aWorkSheet )
         RETURN NIL


    Compress()

         Comprime o descomprime un fichero

    Sintaxis:

         Compress( cFileIn, cFileOut, lMode, bBlock ) -> nResult

         cFileIn  : El fichero de entrada
         cFileOut : El fichero de salida
         lMode    : .T. comprimir y .F. descomprimir
         bBlock   : Un codeblock que ser  evaluado cada 4096 bytes

    Descripci¢n:

         Esta funci¢n permite comprimir cualquier tipo de fichero en torno
         al 37% de su tama¤o, dependiendo del tipo de datos que contenga el
         fichero original (ejecutable, texto, etc.); asimismo, realiza sobre
         un fichero previamente comprimido la operaci¢n inversa, es decir,
         obtener el original descomprimido para poder ser usado.

         El codeblock que se pasa a la funci¢n recibe siempre dos par metros
         num‚ricos, que var¡an dependiendo de si se est  comprimiendo o
         descomprimiendo. Estos son:

         bBlock := { | x, y | QOut( x, y ) )

         Si se est  comprimiendo:

           x --> Total del fichero fuente le¡do (se incrementa cada 4 kb).
           y --> Porcentaje de compresi¢n obtenido hasta el momento.

         Si estamos descomprimiendo:

           x --> Total del fichero fuente le¡do (se incremente cada 4 kb).
           y --> Porcentaje que se ha descomprimido hasta el momento.

         No existe limitaci¢n en cuanto al tama¤o del fichero a comprimir.
         La £nica salvedad a mencionar es que el fichero resultante (tanto
         al comprimir como al descomprimir) debe caber en el disco donde

                                 - Page 55 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         se est  generando.

    Valor de Retorno:

         Retorna uno de los siguientes valores:
             0 (operaci¢n sin errores)
             1 (fallo al reservar memoria)
             2 (error de lectura del fichero de entrada)
             3 (error de escritura en el fichero de salida)

    Ejemplo:

         IF Compress( "PROGMAN.EXE", "PROGMAN.LZH", .T., { || NIL } ) == 0
           ?  "Fichero comprimido con ‚xito. Descomprimiendo con otro nombre"
           IF Compress( "PROGMAN.LZH", "OTROPRG.EXE". .F., { || NIL } ) == 0
             ?? "Fichero descomprimido con ‚xito"
           ELSE
             ?  "Se han producido errores durante la descompresi¢n"
           ENDIF
         ELSE
           ?  "Se han producido errores durante la compresi¢n"
         ENDIF


    DirChange()

         Cambia el directorio por defecto

    Sintaxis:

         DirChange( cNewDirec ) -> nError

         cNewDirec : El nuevo directorio

    Descripci¢n:

         Cambia el directorio del DOS por defecto.

    Valor de Retorno:

         Retorna el error del DOS o 0 si no hay ning£n error.

    Ejemplo:

         DirChange ( "\OS2\MDOS" )

See Also: "DirDel()" "DirCreate()" 


    DirCreate()

         Crea un directorio

    Sintaxis:


                                 - Page 56 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         DirCreate( cDirec ) -> nError

         cDirec : Nuevo directorio

    Descripci¢n:

         Crea un nuevo directorio.

    Valor de Retorno:

         Retorna el error del DOS o 0 si no hay ning£n error.

    Ejemplo:

         DirCreate ( "\OS2\Midir" )

See Also: "DirDel()" "DirChange()" 


    DirDel()

         Borra un directorio del disco

    Sintaxis:

         DirDel( cDirec ) -> nError

         cDirec : El directorio a borrar

    Descripci¢n:

         Borra un directorio. Este no puede ser el directorio por defecto.

    Valor de Retorno:

         Retorna el error del DOS o 0 si no hay ning£n error.

    Ejemplo:

         DirDel ( "\OS2\TEMP" )

See Also: "DirChange()" "DirCreate()" 


    DirExist()

         Determina si un directorio existe

    Sintaxis:

         DirExist( cDirec ) -> lExist

         cDirec : El directorio a buscar

    Descripci¢n:

                                 - Page 57 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Determina si un directorio es encontrado.

    Valor de Retorno:

         .T. si el directorio existe o .F. si no existe.

    Ejemplo:

         ? DirExist ( "C:\OS2\MDOS" )    // .T.
         ? DirExist ( "A:\DATA" )        // .T.


    DiskFree()

         Retorna el espacio libre del disco

    Sintaxis:

         DiskFree( nDisk ) -> nLibre

         nDisk : 0 -> disco por defecto
                 1 -> A:
                 2 -> B:
                 3 -> C:
                 ...

    Descripci¢n:

         Retorna el espacio libre del disco especificado

    Valor de Retorno:

         El espacio libre.

    Ejemplo:

         ? DiskSize( 0 )        // Capacidad del disco
         ? DiskFree( 0 )        // Disco libre

See Also: "DiskSize()" 


    DiskSerNum()

         Retorna el n£mero de serie del disco

    Sintaxis:

         DiskSerNum( [nUnit] ) -> cSerialNumber

         nUnit : N£mero de unidad:
                 0 -> Unidad por defecto
                 1 -> A:
                 2 -> B:

                                 - Page 58 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


                 3 -> C:
                 ...

    Descripci¢n:

         Retorna el n£mero de serie del disco si ha sido formateado bajo
         DOS 4.01 o superior.

         El valor por defecto para nUnit es 0, esto es, la funci¢n retorna
         el n£mero de serie del disco por defecto

    Valor de Retorno:

         Un string con el n£mero de serie del disco duro.

    Ejemplo:

         ? DiskSerNum()           //    "1A3D-66B1"


    DiskSize()

         Retorna la capacidad del disco

    Sintaxis:

         DiskSize( nDisk ) -> nCapacity

         nDisk : 0 -> disco por defecto
                 1 -> A:
                 2 -> B:
                 3 -> C:
                 ...

    Descripci¢n:

         Retorna la capacidad del disco especificado

    Valor de Retorno:

         La capacidad.

    Ejemplo:

         ? DiskSize( 0 )        // Capacidad del disco
         ? DiskFree( 0 )        // Disco libre

See Also: "DiskFree()" 


    DOSPath()

         Retorna el Path del DOS

    Sintaxis:

                                 - Page 59 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         DOSPath () -> cPath

    Descripci¢n:

         Retorna el Path del DOS como un string.

    Valor de Retorno:

         El Path del DOS.

    Ejemplo:

         ? DOSPath () // C:\DOS;C:\CLIPPER5\BIN;

See Also: "ClipperPath()" 


    fAttributes()

         Retorna los atributos de un fichero

    Sintaxis:

         fAttributes( cFile ) -> cAttributes

         cFile : El nombre del fichero

    Descripci¢n:

         Retorna los atributos de un fichero, H si el fichero est  oculto,
         S del sistema, A de archivo y R para solo lectura.

    Valor de Retorno:

         Un string con los atributos o NIL si el fichero no existe.

    Ejemplo:

         ? fAttributes ( "Fast.txt" )   // "A"

See Also: "fDate()" "fTime()" "fSize()" 


    fbClose()

         Cierra ficheros binarios

    Sintaxis:

         fbClose( aHandle ) -> NIL

         aHandle : Un array de File handles a cerrar

    Descripci¢n:

                                 - Page 60 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Cierra todos los ficheros especificados en el array

    Valor de Retorno:

         Nada.

    Ejemplo:

         fbClose ( { nHandIn, nHandOut, nHandErr } )

See Also: "fbOpen()" "fbCreate()" "fbWrite()" "fbRead()" 


    fbCreate()

         Crea un fichero binario

    Sintaxis:

         fbCreate( cFile ) -> nHandle

         cFile : El nombre del fichero

    Descripci¢n:

         Crea un fichero con el nombre cFile. Si cFile ya existe ser 
         truncado a tama¤o 0. Si se encuentra alg£n error, se reintentar 
         5 veces la operaci¢n y de persistir el error se invocar  al
         usuario para que determine lo que se debe hacer.

    Valor de Retorno:

         Un file handle o -1 si hay alg£n error.

    Ejemplo:

         nHandle := fbCreate ( "Fast.txt" )

See Also: "fbOpen()" "fbClose()" "fbWrite()" "fbRead()" 


    fbOpen()

         Abre un fichero binario

    Sintaxis:

         fbOpen( cFile, nMode ) -> nHandle

         cFile : El nombre del fichero
         nMode : El modo de apertura del DOS

    Descripci¢n:


                                 - Page 61 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Intenta abrir el fichero cFile en modo nMode con 5 reintentos si
         hay errores.

    Valor de Retorno:

         Un file handle o -1 si hay alg£n error.

    Ejemplo:

         nHandle := fbOpen ( "Fast.txt", 0 )
         If nHandle == -1
           BoxWarning ( "Open error" )
         EndIf

See Also: "fbClose()" "fbCreate()" "fbWrite()" "fbRead()" 


    fbRead()

         Lee bytes de un fichero binario

    Sintaxis:

         fbRead( nHandle, cBuffer, nBuffer, nRead, ;
                 cFile, lForce ) -> lExit

         nHandle : El file handle del fichero.
         cBuffer : El buffer a llenar.
         nBuffer : El n£mero de bytes a leer.
         nRead   : Variable que retorna el n£mero de bytes le¡dos.
         cFile   : El nombre del fichero.
         lForce  : Valor l¢gico para forzar que nBuffer tenga el mismo valor
                   que nRead.

    Descripci¢n:

         Lee bytes de un fichero (nHandle/cFile) dejando el resultado en
         cBuffer. Si cBuffer no es suficientemente grande, la funci¢n
         llenar  con espacios al final. cFile es usado para mostrar
         mensajes de error Si lForce es .T. el n£mero de bytes le¡dos del
         fichero debe ser nBuffer y no retornar  hasta que nRead sea igual
         a esa cantidad. Si lForce es .F. la funci¢n retornar  aunque nRead
         no sea igual a nBuffer. Recuerde que la propia funci¢n se encarga
         de los reintentos.

    Valor de Retorno:

         Si hay alg£n error retorna .F. si no retorna .T.

    Ejemplo:

         cFile     := "Fast.txt"
         nHand     := fbOpen ( cFile, 0 )
         nRead     := 0
         nBuffer   := 100

                                 - Page 62 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         cBuffer   := Space ( nBuffer )
         lForce    := .F.
         If ! fbRead( nHand, cBuffer, nBuffer, @nRead, cFile, lForce )
           BoxWarning ( "Ha habido alg£n error" )
         Else
           BoxWarning ( "He le¡do " + Str ( nRead ) + " bytes" )
         EndIf
         fbClose ( { nHand } )

See Also: "fbOpen()" "fbClose()" "fbCreate()" "fbWrite()" 


    fbWrite()

         Escribe en un fichero binario

    Sintaxis:

         fbWrite ( nHandle, cBuffer, nBuffer, nWrite, ;
                   cFile, lForce ) -> lexit

         nHandle : El file handle del fichero.
         cBuffer : El buffer a escribir en el fichero.
         nBuffer : El n£mero de bytes a ser escritos.
         nWrite  : Variable que retorna el n£mero de bytes escritos.
         cFile   : El nombre del fichero.
         lForce  : Valor l¢gico para forzar que nWrite sea igual a nBuffer.

    Descripci¢n:

         Escribe nBuffer bytes de cBuffer al fichero (nHandle). cFile es
         utilizado para permitir que los mensajes de error sean visualiza-
         dos. If lForce es .T. el valor escrito al fichero debe ser nBuffer
         bytes y no retornar  hasta que nWrite sea igual a nBuffer. Si
         lForce es .F. la funci¢n retornar  tras un error a£n cuando nWrite
         sea distinto de nBuffer.

    Valor de Retorno:

         Si hay un error devuelve .F. si no, devuelve .T.

    Ejemplo:

         cFile     := "Fast.txt"
         nHand     := fbOpen ( cfile, 2 )
         nWrite    := 100
         nBuffer   := 100
         cBuffer   := Space ( nBuffer )
         lForce    := .T.
         If ! fbWrite( nHand, cBuffer, nBuffer, @nWrite, cfile, lForce )
           Warning( "La lectura no ha tenido exito" )
         Else
           Warning( Str( nWrite ) + " debe ser lo mismo " + Str( nBuffer ) )
         EndIf
         fbClose ( { nHand } )

                                 - Page 63 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



See Also: "fbOpen()" "fbClose()" "fbCreate()" "fbRead()" 


    fCopy()

         Copia un fichero a otro

    Sintaxis:

         fCopy ( cSource, cTarget ) -> nError

         cSource : El nombre del fichero origen
         cTarget : El nombre del fichero destino

    Descripci¢n:

         Copia un fichero a otro retornando iguales valores que la funci¢n
         standard fError().

    Valor de Retorno:

         0 si no hay error o un n£mero indicando el tipo de error.

    Ejemplo:

         ? fCopy( "c:\txt\text", "d:\origin\demo.txt" )


    fDate()

         Devuelve la fecha de un fichero

    Sintaxis:

         fDate ( cFile ) -> dDate

         cFile : El nobmre del fichero

    Descripci¢n:

         Devuelve la fecha del fichero como un valor fecha

    Valor de Retorno:

         La fecha del fichero es NIL si el fichero no existe

    Ejemplo:

         ? fDate ( "Fast.Txt" )  //   22/12/92

See Also: "fAttributes()" "fTime()" "fSize()" 


    fDefUnit()

                                 - Page 64 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Cambia la unidad por defecto

    Sintaxis:

         fDefUnit( nUnit ) -> NIL

         nUnit : Nueva unidad por defecto

    Descripci¢n:

         Cambia de la unidad por defecto a la nueva especificada
         sabiendo que 0=A:, 1=B;, ...

    Valor de Retorno:

         Nada.

    Ejemplo:

         fDefUnit ( 1 )  // Change B:

See Also: "fMaxUnit()" 


    fDel()

         Borra un fichero del disco

    Sintaxis:

         fDel( cFile ) -> nError

         cFile : El nombre del fichero

    Descripci¢n:

         Borra el fichero especificado.

    Valor de Retorno:

         Devuelve el error del DOS o cero si no hay error.

    Ejemplo:

         If fDel ( "\dos\command.com" ) == 0
           BoxWarning( "Nooooooooo" )
         EndIf


    fExtension()

         Devuelve la extensi¢n del fichero

    Sintaxis:

                                 - Page 65 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         fExtension ( cFile ) -> cExtension

         cFile : El nombre del fichero

    Descripci¢n:

         Devuelve la extensi¢n del fichero siguiendo las reglas del DOS,
         es decir, un nombre de 8 caracteres seguido por un punto y una
         extensi¢n de 3 caracteres.

    Valor de Retorno:

         Extensi¢n del fichero como un valor caracter o "" si el fichero
         no existe

    Ejemplo:

         ? fExtension ( "C:\FastLib\Fast.Txt" ) // Txt

See Also: "fName()" "fPath()" "fUnit()" 


    fEof()

         Determina si un puntero de fichero apunta a EOF

    Sintaxis:

         fEof( fHandle ) -> lEOF

         fHandle : El handle del fichero

    Descripci¢n:

         Determina si un puntero de fichero apunta a EOF, es decir, est 
         al final del fichero.

    Valor de Retorno:

         Un l¢gico indicando si est  en EOF.

    Ejemplo:

         fHandle := fOpen( "demo.txt", 0 )
         ? fEof( fHandle )

See Also: "fGoBottom()" "fGoTop()" "fPos()" 


    fGoBottom()

         Mueve el puntero al final del fichero

    Sintaxis:

                                 - Page 66 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         fGoBottom( fHandle ) -> nNewPosition

         fHandle : El handle del fichero

    Descripci¢n:

         Mueve el puntero al final del fichero devolviendo un n£merico
         con la nueva posici¢n.

    Valor de Retorno:

         Un n£mero con la nueva posici¢n.

    Ejemplo:

         fHandle := fOpen( "demo.txt", 0 )
         fGoBottom( fHandle )

See Also: "fEof()" "fGoTop()" "fPos()" 


    fGoTop()

         Mueve el puntero al principio del fichero

    Sintaxis:

         fGoTop( fHandle ) -> nNewPosition

         fHandle : El handle del fichero

    Descripci¢n:

         Mueve el puntero al principio del fichero devolviendo un n£merico
         con la nueva posici¢n.

    Valor de Retorno:

         Un n£mero con la nueva posici¢n.

    Ejemplo:

         fHandle := fOpen( "demo.txt", 0 )
         fGoTop( fHandle )

See Also: "fEof()" "fGoBottom()" "fPos()" 


    fMaxUnit()

         Devuelve el n£mero de unidades l¢gicas del DOS

    Sintaxis:


                                 - Page 67 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         fMaxUnit() -> nDrives

    Descripci¢n:

         Devuelve el n£mero de unidades l¢gicas del DOS. A menudo,
         si hay una red Novell, devuelve el valor 32. Bajo DOS nativo
         devuelve 5 o el valor de LASTDRIVE, el cual siempre es mayor.

    Valor de Retorno:

         El n£mero de unidades l¢gicas del DOS.

    Ejemplo:

         nDrives := Str ( fMaxUnit () )
         ? "Tengo " + nDrives + " en mi sistema."

See Also: "fDefUnit()" 


    fName()

         Devuelve el nombre de un fichero sin extensi¢n

    Sintaxis:

         fName ( cFile ) -> cName

         cFile : El nombre del fichero

    Descripci¢n:

         Devuelve el nombre de un fichero siguiendo las reglas de DOS, es
         decir, un nombre de 8 caracteres seguido por un punto y una ex-
         tensi¢n de 3 caracteres.

    Valor de Retorno:

         El nombre de un fichero sin extensi¢n.

    Ejemplo:

         ? fName ( "C:\FastLib\Fast.Txt" ) // Fast

See Also: "fExtension()" "fPath()" "fUnit()" 


    fName()

         Devuelve el path de un fichero

    Sintaxis:

         fPath ( cFile ) -> cPath


                                 - Page 68 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         cFile : El nombre del fichero

    Descripci¢n:

         Devuelve el path de un fichero siguiendo la reglas del DOS, es
         decir, un nombre de 8 caracteres seguido por un punto y una ex-
         tensi¢n de 3 caracteres.

    Valor de Retorno:

         El path del fichero.

    Ejemplo:

         ? fPath ( "C:\FastLib\Fast.Txt" ) // C:\FastLib\

See Also: "fExtension()" "fName()" "fUnit()" 


    fPos()

         Retorna la posici¢n actual de un puntero de fichero

    Sintaxis:

         fPos( fHandle ) -> nPosition

         fHandle : El handle del fichero

    Descripci¢n:

         Retorna la posici¢n relativa actual de un puntero de fichero.

    Valor de Retorno:

         Un n£mero con la posici¢n.

    Ejemplo:

         fHandle := fOpen( "demo.txt", 0 )
         ? fPos( fHandle )

See Also: "fEof()" "fGoBottom()" "fGoTop()" 


    fRandom()

         Genera un nombre de fichero aleatorio

    Sintaxis:

         fRandom() -> cFile

    Descripci¢n:


                                 - Page 69 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Devuelve un nombre de fichero aleatorio con la extensi¢n .TMP

    Valor de Retorno:

         El nombre del fichero.

    Ejemplo:

         ? fRandom ()           // "WEDKFGVD.TMP"


    FreeFiles()

         Devuelve el n£mero de FILES die DOS File Handles

    Sintaxis:

         FreeFiles() -> nFiles

    Descripci¢n:

         Returns the number of available DOS File Handles as a numeric
         value.

    Valor de Retorno:

         A numeric value of the number of available DOS File Handles.

    Ejemplo:

         If FreeFiles() < 20
           BoxWarning ( "Lo siento pero debes tener 20 files" )
         EndIF


    fSearch()

         Busca una cadena en un fichero

    Sintaxis:

         fSearch( cFile, cString ) -> aPosition

         cFile   : Fichero donde busca
         cString : Cadena a buscar

    Descripci¢n:

         Busca una cadena en un fichero y devuelve un array con todas las
         posiciones que han sido encontradas en la cadena o un array vac¡o
         si la cadena no se ha encontrado en el fichero.

    Valor de Retorno:

         Un array de 0 a n elementos. Cada elemento contiene una posici¢n

                                 - Page 70 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         relativa al fichero, comenzando de 0.

    Ejemplo:

         aRet := fSearch ( "Test.txt", "I want to be free" )
         For nInd := 1 To Len ( aRet )
           ? aRet [ nInd ]
         Next


    fSize()

         Devuelve el tama¤o de un fichero

    Sintaxis:

         fSize ( cFile ) -> nSize

         cFile : El nombre del fichero

    Descripci¢n:

         Devuelve el tama¤o de un fichero como valor num‚rico.

    Valor de Retorno:

         El tama¤o del fichero o NIL si el fichero no se encuentra.

    Ejemplo:

         ? fSize ( "Fast.Txt" )  //   112

See Also: "fAttributes()" "fDate()" "fTime()" 


    fTime()

         Devuelve la hora de un fichero

    Sintaxis:

         fTime ( cFile ) -> cTime

         cFile : El nombre del fichero

    Descripci¢n:

         Devuelve la hora de un fichero como valor caracter.

    Valor de Retorno:

         La hora del fichero o NIL si el fichero no se encuentra.

    Ejemplo:


                                 - Page 71 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         ? fTime ( "Fast.Txt" )  //   12:12:13

See Also: "fAttributes()" "fDate()" "fSize()" 


    fUnit()

         Devuelve la unidad donde existe el fichero

    Sintaxis:

         fUnit ( cFile ) -> cUnit

         cFile : El nombre del fichero

    Descripci¢n:

         Devuelve la unidad donde existe el fichero como valor caracter.

    Valor de Retorno:

         La unidad donde el fichero fue encontrado o NIL si no se encontr¢.

    Ejemplo:

         ? fUnit ( "C:\FastLib\Fast.Txt" ) // C:

See Also: "fExtension()" "fName()" "fPath()" 


    GetLabel()

         Devuelve el nombre del disco

    Sintaxis:

         GetLabel( nUnit ) -> cLabel

         nUnit : Un n£mero de disco. 0=Disco actual, 1=A:, 2=B:, 3=C:, ...

    Descripci¢n:

         Devuelve el nombre de un disco.

    Valor de Retorno:

         Una cadena con el nombre del disco.

    Ejemplo:

         ? GetLabel ( 0 )               // "MANU ROIBAL"

See Also: "SetLabel()" 



                                 - Page 72 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    IsBootAble()

         Determina si el disco actual tiene sector de arranque

    Sintaxis:

         IsBootAble() -> lBoot

    Descripci¢n:

         Determina si el disco actual tiene sector de arranque.

    Valor de Retorno:

         Un valor l¢gico indicando si tiene sector de arranque.

    Ejemplo:

         While ! IsBootAble()
           Warning( "Inserte un disco con Sistema Operativo" )
         End


    IsFloppy()

         Determina si el disco actual es un floppy

    Sintaxis:

         IsFloppy() -> lFloppy

    Descripci¢n:

         Determina si el disco actual es un floppy.

    Valor de Retorno:

         Un valor l¢gico indicando si es un floppy.

    Ejemplo:

         If IsFloppy()
           Warning( "Error: Necesitas disco duro" )
         EndIf

See Also: "IsHardDisk()" "IsNetDev()" 


    IsHardDisk()

         Determina si el disco actual es un disco duro

    Sintaxis:

         IsHardDisk() -> lHard

                                 - Page 73 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Descripci¢n:

         Determina si el disco actual es un disco duro.

    Valor de Retorno:

         Un valor l¢gico indicando si es un disco duro.

    Ejemplo:

         If IsHardDisk()
           Warning( "Tienes disco duro" )
         EndIf

See Also: "IsFloppy()" "IsNetDev()" 


    IsNetDev()

         Determina si el disco actual es un disco de red

    Sintaxis:

         IsNetDev() -> lLan

    Descripci¢n:

         Determina si el disco actual es un disco de red.

    Valor de Retorno:

         Un valor l¢gico indicando si es un disco de red.

    Ejemplo:

         If IsNetDev()
           Warning( "Tienes una LAN" )
         EndIf

See Also: "IsFloppy()" "IsHardDisk()" 


    IsSmartDrv()

         Determina si SmartDrv ha sido cargado

    Sintaxis:

         IsSmartDrv() -> lLoaded

    Descripci¢n:

         Determina si SmartDrv ha sido cargado.


                                 - Page 74 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Valor de Retorno:

         Un l¢gico indicando si SMARTDRV.EXE ha sido cargado o no.

    Ejemplo:

         If IsSmartDrv()
           Warning ( "SmartDrv ha sido cargado" )
         EndIf


    LowDiskFirm()

         Determina la revisi¢n del firmware de un disco IDE

    Sintaxis:

         LowDiskFirm() -> cFirm

    Descripci¢n:

         Determina la revisi¢n del firmware de un disco IDE usando un m‚todo
         de bajo nivel.
         Est  funci¢n es solo v lida para discos IDE.

    Valor de Retorno:

         Un string con la revisi¢n del firmware.

    Ejemplo:

         ? LowDiskFirm()

See Also: "LowDiskModel()" "LowDiskSerial()" 


    LowDiskInfo()

         Determina informaci¢n sobre el disco

    Sintaxis:

         LowDiskInfo() -> aInfo

    Descripci¢n:

         Determina informaci¢n sobre caracter¡sticas f¡sicas del disco
         usando un m‚todo de bajo nivel.

    Valor de Retorno:

         Un array con:

           Cabezas
           Cilindros

                                 - Page 75 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


           Sectores por pista

    Ejemplo:

         aInfo := LowDiskInfo()
         ? aInfo[ 1 ]
         ? aInfo[ 2 ]
         ? aInfo[ 3 ]

See Also: "LowDiskFirm()" "LowDiskModel()" "LowDiskSerial()" 


    LowDiskModel()

         Determina el modelo de un disco IDE

    Sintaxis:

         LowDiskModel() -> cModel

    Descripci¢n:

         Determina el model de un disco IDE usando un m‚todo de bajo nivel.
         Est  funci¢n es solo v lida para discos IDE.

    Valor de Retorno:

         Un string con el modelo.

    Ejemplo:

         ? LowDiskModel()

See Also: "LowDiskFirm()" "LowDiskInfo()" "LowDiskSerial()" 


    LowDiskSerial()

         Determina el n£mero de serie de un disco IDE

    Sintaxis:

         LowDiskSerial() -> cSerial

    Descripci¢n:

         Determina el n£mero de serie de fabricaci¢n de un disco IDE
         usando un m‚todo de bajo nivel.
         Est  funci¢n es solo v lida para discos IDE.

    Valor de Retorno:

         Un string con el n£mero de serie.

    Ejemplo:

                                 - Page 76 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         ? LowDiskSerial()

See Also: "LowDiskFirm()" "LowDiskInfo()" "LowDiskModel()" 


    NumDisks()

         Determina el n£mero de discos duros del sistema

    Sintaxis:

         NumDisks() -> nDisks

    Descripci¢n:

         Determina el n£mero de discos duros del sistema, no particiones.

    Valor de Retorno:

         El n£mero de discos duros.

    Ejemplo:

         ? NumDisks()


    SetLabel()

         Escribe el nombre en un disco

    Sintaxis:

         SetLabel( nUnit [, cNewLabel] ) -> nError

         nUnit     : Un n£mero de disco. 0=actual, 1=A:, 2=B:, 3=C:, ...
         cNewLabel : El nuevo nombre. El valor por defecto es "".

    Descripci¢n:

         Escribe el nombre en un disco.

    Valor de Retorno:

         C¢digo de error DOS o cero si no hay error.

    Ejemplo:

         cLabel := GetLabel( 0 )
         ? cLabel                       // devuelve "MANU ROIBAL"
         SetLabel( 0 )                  // purga el label
         GetLabel( 0 )                  // devuelve ""
         SetLabel( 0, cLabel )          // escribe nuevo nombre
         ? GetLabel( 0 )                // devuelve "MANU ROIBAL"


                                 - Page 77 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


See Also: "GetLabel()" 


    SmartFlush()

         Vuelca los buffers de cach‚ de SmartDrv

    Sintaxis:

         SmartFlush() -> NIL

    Descripci¢n:

         Vuelca los buffers de cach‚ de SmartDrv.
         Est  funci¢n tambi‚n est  soportada por PC Cach‚ 8.0.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SmartFlush()

See Also: "SmartHits()" "SmartMisses()" "SmartReset()" "SmartSize()" 


    SmartHits()

         Retorna el n£mero de aciertos de cach‚ de SmartDrv

    Sintaxis:

         SmartHits() -> nHits

    Descripci¢n:

         Retorna el n£mero de aciertos del cach‚ de SmartDrv.
         Est  funci¢n tambi‚n est  soportada por PC Cach‚ 8.0.

    Valor de Retorno:

         Un n£mero con el n£mero de aciertos o Nil si SmartDrv no est 
         cargado.

    Ejemplo:

         ? SmartHits()

See Also: "SmartFlush()" "SmartMisses()" "SmartReset()" "SmartSize()" 


    SmartMisses()

         Retorna el n£mero de fallos de cach‚ de SmartDrv

                                 - Page 78 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Sintaxis:

         SmartMisses() -> nMisses

    Descripci¢n:

         Retorna el n£mero de fallos del cach‚ de SmartDrv.
         Est  funci¢n tambi‚n est  soportada por PC Cach‚ 8.0.

    Valor de Retorno:

         Un n£mero con el n£mero de fallos o Nil si SmartDrv no est 
         cargado.

    Ejemplo:

         ? SmartMisses()

See Also: "SmartFlush()" "SmartHits()" "SmartReset()" "SmartSize()" 


    SmartReset()

         Inicializa los buffers de cach‚ de SmartDrv

    Sintaxis:

         SmartReset() -> NIL

    Descripci¢n:

         Inicializa los buffers de cach‚ de SmartDrv.
         Est  funci¢n tambi‚n est  soportada por PC Cach‚ 8.0.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SmartReset()

See Also: "SmartFlush()" "SmartHits()" "SmartMisses()" "SmartSize()" 


    SmartSize()

         Retorna el tama¤o del cach‚ de SmartDrv

    Sintaxis:

         SmartSize() -> nSize

    Descripci¢n:

                                 - Page 79 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Retorna el tama¤o del cach‚ de SmartDrv.
         Est  funci¢n tambi‚n est  soportada por PC Cach‚ 8.0.

    Valor de Retorno:

         El tama¤o del cache en bytes o NIL si SmartDrv no est  cargado

    Ejemplo:

         ? SmartSize()

See Also: "SmartFlush()" "SmartHits()" "SmartMisses()" "SmartSizeWin()" 


    SmartSizeWin()

         Retorna el tama¤o del cach‚ de SmartDrv bajo Windows 3

    Sintaxis:

         SmartSizeWin() -> nSize

    Descripci¢n:

         Retorna el tama¤o del cach‚ de SmartDrv mientras se ejecuta
         Microsoft Windows.
         Est  funci¢n tambi‚n est  soportada por PC Cach‚ 8.0.

    Valor de Retorno:

         El tama¤o del cache en bytes o NIL si smartdrv no est  cargado.

    Ejemplo:

         ? SmartSizeWin()

See Also: "SmartFlush()" "SmartHits()" "SmartMisses()" "SmartSize()" 


    ZipFile()

         Devuelve el contenido de un fichero ZIP

    Sintaxis:

         ZipFile ( cFile ) -> aZIP

         cFile : El nombre del fichero ZIP

    Descripci¢n:

         Devuelve un array bidimensional con informaci¢n sobre el contenido
         del fichero ZIP.


                                 - Page 80 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Los subarrays tienen el siguiente formato:

         {
           { cName, cFull, dDate, cTime, nSize, nComp, cRatio, cMeth, nNum }
           ...
           { cName, cFull, dDate, cTime, nSize, nComp, cRatio, cMeth, nNum }
         }

         cName          Nombre del fichero
         cFull          Nombfe del fichero con path
         dDate          Fecha del fichero
         cTime          Hora del fichero
         nSize          Tama¤o real del fichero
         nComp          Tama¤o comprimido
         cRatio         Ratio de compresi¢n
         cMeth          Metodo de compresi¢n
         nNum           N£mero de ficheros

    Valor de Retorno:

         Un array con informaci¢n sobre el contenido de un fichero ZIP.

    Ejemplo:

         aZIP := ZipFile ( "C:\FastLib\Fast.Zip" )
         For nInd := 1 To Len ( aZIP )
           For nOther := 1 To Len ( aZIP [ nInd ] )
             ? aZIP [ nInd, nOther ]
           Next
         Next

See Also: "ArjFile()" 























                                 - Page 81 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 1, Juegos




    Que podr¡a decirle de esta secci¢n? ... Disfr£tela!

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    Chaos()

         Reproduce una situaci¢n de chaos en el PC

    Sintaxis:

         Chaos() -> NIL

    Descripci¢n:

         Reproduce una situaci¢n de caos en el PC haciendo caer las letras
         que est‚n en la pantalla.
         Tan solo escribe Chaos() en tu programa.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Chaos()


    IsGame()

         Indica si el sistema tiene un joystick

    Sintaxis:

         IsGame() -> lExist

    Descripci¢n:

         Determina si el sistema tiene un joystick e inicializa el area
         de comunicaciones de la BIOS.

    Valor de Retorno:

         .T. si hay joystick y .F. si no hay

    Ejemplo:

         If IsJoystick()
           Warning( "Mi ordenador es un gameboy" )
         EndIf

                                 - Page 82 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'




    jButton1()

         Indica si el bot¢n 1 del joystick est  pulsado

    Sintaxis:

         jButton1() -> lPulsado

    Descripci¢n:

         Indica si el bot¢n 1 del primer joystick del sistema est  pulsado
         o no, retornando un valor l¢gico.

    Valor de Retorno:

         .T. si est  pulsado o .F. si no lo est 

    Ejemplo:

         If jButton1()
           Warning ( "El bot¢n 1 est  pulsado" )
         EndIf

See Also: "jButton2()" 


    jButton2()

         Indica si el bot¢n 2 del joystick est  pulsado

    Sintaxis:

         jButton2() -> lPulsado

    Descripci¢n:

         Indica si el bot¢n 2 del primer joystick del sistema est  pulsado
         o no, retornando un valor l¢gico.

    Valor de Retorno:

         .T. si est  pulsado o .F. si no lo est 

    Ejemplo:

         If jButton2()
           Warning ( "El bot¢n 2 est  pulsado" )
         EndIf

See Also: "jButton1()" 




                                 - Page 83 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    jClick()

         Indica si alg£n bot¢n del joystick est  pulsado

    Sintaxis:

         jClick() -> lPulsado

    Descripci¢n:

         Indica si alg£n bot¢n del joystick est  pulsado. Para determinar
         cual ha sido pulsado use jButton1() y jButton2().

    Valor de Retorno:

         Un valor l¢gico indicando si alg£n bot¢n ha sido pulsado

    Ejemplo:

         If jClick()
           Warning ( "Botones 1 y/o 2 est n pulsados" )
         EndIf

See Also: "jButton1()" "jButton2()" 


    jInArea()

         Determina si el joystick est  en una zona

    Sintaxis:

         jInArea( nY1, nX1, nY2, nX2 ) -> lInArea

         nY1, nX1, nY2, nX2 : Las coordenadas de la zona

    Descripci¢n:

         Determina si el joystick est  situado en una zona de la pantalla.

    Valor de Retorno:

         Un valor l¢gico indicando si est  dentro de la zona especificada

    Ejemplo:

         If jInArea ( 240, 330, 242, 340 )
           Warning ( "Ok. El Joystick est  en el medio" )
         EndIf


    jPosX()

         Indica la posici¢n X del joystick


                                 - Page 84 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Sintaxis:

         jPosX() -> nPos

    Descripci¢n:

         Indica la posici¢n X del primer joystick del sistema.

    Valor de Retorno:

         La posici¢n X del joystick

    Ejemplo:

         If jPosX() < 400 .And. jPosX() > 200
           Warning( "Perfecto" )
         EndIf

See Also: "jPosY()" 


    jPosY()

         Indica la posici¢n Y del joystick

    Sintaxis:

         jPosY() -> nPos

    Descripci¢n:

         Indica la posici¢n Y del primer joystick del sistema.

    Valor de Retorno:

         La posici¢n Y del joystick

    Ejemplo:

         If jPosY() < 300 .And. jPosY() > 100
           Warning ( "Ok" )
         EndIf

See Also: "jPosX()" 


    Puzzle()

         Juego del Puzzle hecho con 100% c¢digo Clipper

    Sintaxis:

         Puzzle( [nY], [nX], [cColor] ) -> lWin

         nY     : L¡nea superior

                                 - Page 85 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         nX     : Columna izquierda
         cColor : El color de la pantalla

    Descripci¢n:

         Disfruta con el Puzzle.

    Valor de Retorno:

         Si gana retorna .T., si gana el ordenador .F.

    Ejemplo:

         Puzzle()

See Also: "Serpent()" 


    Serpent()

         Juego de la serpiente hecho con 100% c¢digo Clipper

    Sintaxis:

         Serpent( cColor, cColorHead, cColorMark ) -> NIL

         cColor     : El color del cuerpo de la serpiente
         cColorHead : El color de la cabeza cuando choca
         cColorMark : El color de las marcas de la pantalla

    Descripci¢n:

         Disfruta con la serpiente

    Valor de Retorno:

         Nada.

    Ejemplo:

         Serpent ( "W+/B*", "R+/B*", "G+/B*" )


    SpeakGame()

         Genera un sonido con el speaker

    Sintaxis:

         SpeakGame( nLapsus ) -> NIL

         nLapsus : La duraci¢n del sonido. Este valor tambi‚n determina
                   la frecuencia el sonido.

    Descripci¢n:

                                 - Page 86 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Genera un sonido con el speaker accediendo a ‚l a bajo nivel y
         determinando la frecuencia.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SpeakGame( 10000 )












































                                 - Page 87 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 1, Gr ficos




    Esta secci¢n intenta dotar a Clipper de accesos al modo gr fico, dado
 que las bibliotecas estandard no permiten el uso de estos modos de v¡deo.

    Son simples funciones que no usan ning£na librer¡a externa dado que ellas
 mismas generan todos los algoritmos basados en c lculos internos. Y el c¢digo
 solo se incrementar  en 3kb de tama¤o!!

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    BackGraph()

         Dibuja el fundo de un gr fico 3D

    Sintaxis:

         BackGraph ( cTitle, nMaxValue, nBaseSize ) -> NIL

         cTitle    : El t¡tulo del gr fico
         nMaxValue : El valor m ximo del gr fico
         nBaseSize : El tama¤o de la base en pixels

    Descripci¢n:

         Dibuja el fundo de un gr fico 3D incluyendo el t¡tulo y la escala
         dependiendo de nMaxValue.

         De esta forma, con esta function y DrawBar() puede crear sus
         propios gr ficos.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SetVGA()
         BackGraph( "Esto es una demo", 150000, 60 )
         Inkey( 0 )
         TxtMode()

See Also: "DrawBar()" 


    bmpInfo()

         Retorna informaci¢n sobre un fichero BMP

    Sintaxis:


                                 - Page 88 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         bmpInfo( cFile ) -> aInfo | NIL

         cFile : El nombre del fichero BMP

    Descripci¢n:

         Retorna informaci¢n sobre un fichero BMP o NIL si el fichero no
         tiene un formato BMP correcto.

    Valor de Retorno:

         NIL si el fichero no es un BMP o un array con la siguiente
         informaci¢n:

            Ancho
            Alto
            N£mero de planos
            N£mero de colores

    Ejemplo:

            aInfo := bmpInfo( "image.bmp" )
            IF aInfo != NIL
              ? aInfo[ 1 ]
              ? aInfo[ 2 ]
              ? aInfo[ 3 ]
              ? aInfo[ 4 ]
            ENDIF


    bmpShow256()

         Muestra un BMP de 256 colores en VGA

    Sintaxis:

         bmpShow256 ( cFile, [lPalette], [nX], [nY] ) -> lError

         cFile    : El nombre del fichero BMP
         lPalette : Un l¢gico indicando si deseamos fijar la paleta del
                    fichero o mantener la del sistema. Si es .T. prevalece
                    la del fichero y si es .F. la del sistema. Por defecto
                    es .T.
         nX       : La coordenada inicial X donde se desea mostrar el BMP.
                    Valor por defecto es 0. Puede asignarse cualquier valor
                    entre 0 y el n£mero m ximo de pixels horizontales, es
                    decir, 0-319.
         nY       : La coordenada inicial Y donde se desea mostrar el BMP.
                    Valor por defecto es 0. Puede asignarse cualquier valor
                    entre 0 y el n£mero m ximo de pixels verticales, es
                    decir, 0-199.

    Descripci¢n:

         El BMP puede tener cualquier tama¤o. Olvide la limitaci¢n de los

                                 - Page 89 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         64kb.

         Solo trabaja si el sistema dispone de una tarjeta VGA.

         Esta funci¢n no espera tecla, ni restaura el modo de v¡deo, as¡
         pu‚s, esto se deja a la responsabilidad del usuario. Esto es muy
         £til cuando se desea mostrar varios fichero BMP consecutivamente
         sin pasar por modo texto entre cada uno de ellos.

         El fichero BMP puede tener cualquier resoluci¢n, esto es, puede
         ser 20x100... Por lo tanto no es necesario que tenga resoluciones
         conocidas como 320x200.

         El formato bitmap RLE encoded no es soportado.

    Valor de Retorno:

         .T. si todo va bien o .F. si el fichero no existe, el sistema no
         tiene VGA, el fichero no tiene un formato correcto o no hay
         suficiente memoria.

    Ejemplo:

         //
         // muestra un bmp de 256 colores en X=20 / Y=25
         //
         nOldMode := SetVGA256()
         IF bmpShow256( "c:\fast\lib\m_roibal.bmp", , 20, 25 )
           Inkey( 0 )
         ENDIF
         VideoMode( nOldMode )


    Degrade()

         Hace un degradado progresivo de la paleta

    Sintaxis:

         Degrade( cPalette ) -> NIL

        cPalette : Un string de 768 bytes con la paleta actual o con una
                   que se desea tomar como referencia del degradado.

    Descripci¢n:

         Est  function trabajo sinctronizada con el controlador de CRT.
         De esa forma el degradado ofrece una visi¢n de suavidad y cambio
         progresivo.

    Valor de Retorno:

         Nada.

    Ejemplo:

                                 - Page 90 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         cPalette := GetPalette()
         Degrade( cPalette )
         Upgrade( cPalette )

See Also: "Upgrade()" "GetPalette()" 


    DispChar()

         Escribe un car cter en la pantalla

    Sintaxis:

         DispChar ( nChar, nX, nY, nFore, nBack ) -> NIL

         nChar : El valor ascii del car cter
         nX    : Coordenada X
         nY    : Coordenada Y
         nFore : El color del car cter
         nBack : El color del fondo

    Descripci¢n:

         Ecscribe un car cter en modo gr fico. El modo debe ser EGA o VGA.

    Valor de Retorno:

         Nada.

    Ejemplo:

         DispChar ( Asc ( "A" ), 20, 30, 2, 0 )

See Also: "DispStr()" 


    DispStr()

         Escribe un string en la pantalla

    Sintaxis:

         DispStr ( cStr, nX, nY, nFore, nBack, nSep ) -> NIL

         cStr  : El string a escribir
         nX    : Coordenada X
         nY    : Coordenada Y
         nFore : El color de los caracteres
         nBack : El color del font
         nSep  : Espacio entre caracteres. Por defecto 8 pixels.

    Descripci¢n:

         Escribe un string en modo gr fico. El modo debe ser EGA o VGA.

                                 - Page 91 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Valor de Retorno:

         Nada.

    Ejemplo:

         DispStr ( "Escribe un modo gr fico", 20, 30, 2, 0, 10 )

See Also: "DispChar()" "Outxy()" 


    DrawBar()

         Dibuja una barra 3D

    Sintaxis:

         DrawBar( nX, nY, nHigh, nWide, nShadowLen, ;
                  nColor, nShadowColor, lDelimiter, nTypeBar ) -> NIL

         nX           : Coordenada X
         nY           : Coordenada Y
         nHigh        : El alto de la barra
                        Ver ejemplo para m s informaci¢n
         nWide        : El ancho de la barra
         nShadowLen   : El tama¤o de la sombra
         nColor       : El color de la barra
         nShadowColor : El color de la sombra
         lDelimiter   : Un l¢gico indicando si se desea dibujar las l¡neas
                        delimitadoras de la barra
         nTypeBar     : Tupo de barra
                          0 : por defecto, normal
                          1 : piramidal ascendente
                          2 : piramidal descendente
                          3 : cil¡ndrica

    Descripci¢n:

         Dibja un barra 3D en modo gr fico.

         Esta funci¢n es usada por Graph*() en FAST.lib.
         De esta forma, con esta funci¢n y BackGraph() puede crear sus
         propios gr ficos.

    Valor de Retorno:

         Nada.

    Ejemplo:

         #define BAR_RATE 250

         nMax  := 0
         aBars := { 100, 200, 300, 400, 500, 300, 200, 350 }

                                 - Page 92 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         // obtiene el valor m ximo de las barras
         aEval( aBars, { | nX | nMax := MAX( nX, nMax ) } )

         SetVGA()
         BackGraph( "T¡tulo", nMax, 80 )
         FOR nInd := 1 TO LEN( aBars )
           DrawBar( 100, ;
                    300 + ( 30 * nInd ), ;
                    150 / nMax * BAR_RATE, ;
                    20, 10, 3, 11, .F. )
         NEXT
         Inkey( 0 )
         TxtMode()

See Also: "BackGraph()" 


    FliEver()

         Muestra una animaci¢n FLI hasta que se pulse una tecla

    Sintaxis:

         FliEver( cFileFLI ) -> nResult

         cFileFLI : El fichero FLI a mostrar

    Descripci¢n:

         Muestra una animaci¢n FLI creada con Autodesk Animator hasta que
         se pulse una tecla

         La animaci¢n del Fast Library demo program es un ejemplo de un
         CorelDRAW CD.

    Valor de Retorno:

         0 u otro n£mero indicando un error.

    Ejemplo:

         FliEver( "demo.fli" )

See Also: "FliOnce()" 


    FliOnce()

         Muestra una animaci¢n FLI


    Sintaxis:

         FliOnce( cFileFLI ) -> nResult

                                 - Page 93 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         cFileFLI : El fichero FLI a mostrar

    Descripci¢n:

         Muestra una animaci¢n FLI creada con Autodesk Animator.

         La animaci¢n del Fast Library demo program es un ejemplo de un
         CorelDRAW CD.

    Valor de Retorno:

         0 u otro n£mero indicando un error.

    Ejemplo:

         FliOnce( "demo.fli" )

See Also: "FliEver()" 


    fGetPixel()

         Retorna el color de un punto en modo gr fico

    Sintaxis:

         fGetPixel( nCol, nRow ) -> nColor

         nCol    : Columna del punto
         nRow    : Fila del punto

    Descripci¢n:

         Retorna el color de un punto especificado por sus coordenadas.

    Valor de Retorno:

         Nada.

    Ejemplo:

         nMode := SetVGA()
         If fGetPixel ( 330, 240 ) == 0
           DispChar ( "Es negro", 20, 20, 3, 0, 10 )
         EndIf
         Inkey(0)
         TxtMode()

See Also: "fSetPixel()" 


    fSetPixel()

         Dibuja un punto en modo gr fico

                                 - Page 94 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Sintaxis:

         fSetPixel( nCol, nRow, nColor ) -> NIL

         nCol    : La columna del punto.
         nRow    : La fila del punto.
         nColor  : El color. Debe ser un valor num‚rico.

    Descripci¢n:

         Dibuja un punto en la pantalla en las coordenadas y color dados.

    Valor de Retorno:

         Nada.

    Ejemplo:

         nMode := SetVGA()
         fSetPixel ( 330, 240, 2 )
         Inkey(0)
         TxtMode()

See Also: "fGetPixel()" 


    fgBox()

         Dibuja una caja en modo gr fico

    Sintaxis:

         fgBox ( nX1, nY1, nX2, nY2, nColor ) -> NIL

         nX1    : Coordenada X1
         nY1    : Coordenada Y1
         nX2    : Coordenada X2
         nY2    : Coordenada Y2
         nColor : Un n£mero con el color

    Descripci¢n:

         Dibuja una caja en modo gr fico. El modo debe ser EGA o VGA.

    Valor de Retorno:

         Nada.

    Ejemplo:

         fgBox ( 200, 300, 250, 350, 4 )

See Also: "fgBox3D()" 


                                 - Page 95 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    fgBox3D()

         Dibuja una caja 3D en modo gr fico

    Sintaxis:

         fgBox3D ( nX1, nY1, nX2, nY2, nColor1, nColor2 ) -> NIL

         nX1     : Coordenada X1
         nY1     : Coordenada Y1
         nX2     : Coordenada X2
         nY2     : Coordenada Y2
         nColor1 : Un n£mero con el primer color
         nColor2 : Un n£mero con el segundo color

    Descripci¢n:

         Dibuja una caja 3D en modo gr fico. El modo debe ser EGA o VGA.

    Valor de Retorno:

         Nada.

    Ejemplo:

         fgBox3D ( 200, 300, 250, 350, 4, 5 )

See Also: "fgBox()" 


    fgCircle()

         Dibuja una circunferencia en modo gr fico

    Sintaxis:

         fgCircle ( nCenterX, nCenterY, nRadius, nColor ) -> NIL

         nCenterX : Coordenada X del centro
         nCenterY : Coordenada Y del centro
         nRadius  : Tama¤o del radio
         nColor   : Un n£mero con el color

    Descripci¢n:

         Dibuja una circunferencia en modo gr fico. El modo debe ser
         EGA o VGA.

    Valor de Retorno:

         Nada.

    Ejemplo:


                                 - Page 96 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         fgCircle ( 200, 300, 50, 2 )

See Also: "fgEllipse()" 


    fgCls()

         Borra la pantalla en modo gr fico

    Sintaxis:

         fgCls ( nColor, [nX1], [nY1], [nX2], [nY2] ) -> NIL

         nColor : Un n£mero con el color
         nX1    : Coordenada X1, por defecto 0
         nY1    : Coordenada Y1, por defecto 0
         nX2    : Coordenada X2, por defecto 79
         nY2    : Coordenada Y2, por defecto 29

    Descripci¢n:

         Borra la pantalla en modo gr fico con un color determinado. Por
         defecto borra toda la pantalla desde 0,0 hasta 29,79. Recuerde
         que las coordenadas son especificadas en formato de modo texto.

    Valor de Retorno:

         Nada.

    Ejemplo:

         fgCls( 4, 2, 3, 5, 5 )

See Also: "fgFill()" 


    fgEllipse()

         Dibuja una elipse en modo gr fico

    Sintaxis:

         fgEllipse ( nCenterX, nCenterY, nFocusA, nFocusB, nColor ) -> NIL

         nCenterX : Coordenada X del centro
         nCenterY : Coordenada Y del centro
         nFocusA  : Valor del foco A
         nFocusB  : Valor del foco B
         nColor   : Un n£mero con el color

    Descripci¢n:

         Dibuja una elipse en modo gr fico. El modo debe ser EGA o VGA.

    Valor de Retorno:

                                 - Page 97 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Nada.

    Ejemplo:

         fgEllipse ( 200, 300, 60, 50, 3 )

See Also: "fgCircle()" 


    fgFill()

         Rellena una porci¢n de la pantalla en modo gr fico

    Sintaxis:

         fgFill ( nX1, nY1, nX2, nY2, nColor ) -> NIL

         nX1    : Coordenada X1
         nY1    : Coordenada Y1
         nX2    : Coordenada X2
         nY2    : Coordenada Y2
         nColor : Un n£mero con el color

    Descripci¢n:

         Rellena una porci¢n de la pantalla en modo gr fico con un color
         determinado. Recuerde que las coordenadas son especificadas en
         formato de modo gr fico.
         Solo funciona en modo VGA.

    Valor de Retorno:

         Nada.

    Ejemplo:

         fgFill( 20, 30, 50, 50, 4 )

See Also: "fgCls()" 


    fgFrame()

         Dibuja una caja con marco en modo gr fico

    Sintaxis:

         fgFrame ( nX1, nY1, nX2, nY2, nColor1, nColor2 ) -> NIL

         nX1     : Coordenada X1
         nY1     : Coordenada Y1
         nX2     : Coordenada X2
         nY2     : Coordenada Y2
         nColor1 : Un n£mero con el primer color

                                 - Page 98 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         nColor2 : Un n£mero con el segundo color

    Descripci¢n:

         Dibuja una caja con marco en modo gr fico. El modo debe ser
         EGA o VGA.

    Valor de Retorno:

         Nada.

    Ejemplo:

         fgFrame ( 200, 300, 250, 350, 4, 5 )

See Also: "fgFrame3D()" 


    fgFrame3D()

         Dibuja una caja 3D con marco en modo gr fico

    Sintaxis:

         fgFrame3D ( nX1, nY1, nX2, nY2, nColor1, nColor2 ) -> NIL

         nX1     : Coordenada X1
         nY1     : Coordenada Y1
         nX2     : Coordenada X2
         nY2     : Coordenada Y2
         nColor1 : Un n£mero con el primer color
         nColor2 : Un n£mero con el segundo color

    Descripci¢n:

         Dibuja una caja 3D con marco en modo gr fico. El modo debe ser
         EGA o VGA.

    Valor de Retorno:

         Nada.

    Ejemplo:

         fgFrame3D ( 200, 300, 250, 350, 4, 5 )

See Also: "fgFrame()" 


    fgLine()

         Dibuja una l¡nea en modo gr fico

    Sintaxis:


                                 - Page 99 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         fgLine ( nX1, nY1, nX2, nY2, nColor ) -> NIL

         nX1    : Coordenada X1
         nY1    : Coordenada Y1
         nX2    : Coordenada X2
         nY2    : Coordenada Y2
         nColor : Un n£mero con el color

    Descripci¢n:

         Dibuja una l¡nea en modo gr fico. El modo debe ser EGA o VGA.

    Valor de Retorno:

         Nada.

    Ejemplo:

         fgLine ( 200, 300, 250, 350, 4 )

See Also: "fgBox()" 


    fgWinBox()

         Dibuja una ventana en modo gr fico

    Sintaxis:

         fgWinBox ( nX1, nY1, nX2, nY2, nColor ) -> NIL

         nX1    : Coordenada X1
         nY1    : Coordenada Y1
         nX2    : Coordenada X2
         nY2    : Coordenada Y2
         nColor : Un n£mero con el color

    Descripci¢n:

         Dibuja una ventana en modo gr fico. El modo debe ser EGA o VGA.

    Valor de Retorno:

         Nada.

    Ejemplo:

         fgWinBox ( 200, 300, 250, 350, 4 )

See Also: "fgBox()" "fgBox3D()" 


    GetPalette()

         Retorna el color actual de la paleta

                                 - Page 100 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Sintaxis:

         GetPalette() -> cPalette

    Descripci¢n:

         Retorna un string de 768 con el color actual de la paleta.

         Esta funci¢n es muy £til con Upgrade() y Degrade().

    Valor de Retorno:

         Un string de 768 bytes con el color de la paleta.

    Ejemplo:

         cPalette := GetPalette()
         Degrade( cPalette )
         Upgrade( cPalette )

See Also: "Degrade()" "SetPalette()" "Upgrade()" 


    gifColors()

         Retorna el n£mero de colores de un GIF

    Sintaxis:

         gifIsGIF ( cFile ) -> nColors

         cFile : Nombre del fichero GIF

    Descripci¢n:

         Retorna el n£mero de colores que contiene una imagen en
         fichero GIF.

    Valor de Retorno:

         Un valor entre 2 y 256 indicando el n£mero de colores o NIL si el
         fichero no tiene formato GIF.

    Ejemplo:

         ? gifColors ( "c:\xx\giveme.gif" )

See Also: "gifIsGIF()" 


    gifIsGIF()

         Indica si un fichero tiene formato GIF


                                 - Page 101 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Sintaxis:

         gifIsGIF ( cFile ) -> lIsGIF

         cFile : Nombre del fichero GIF

    Descripci¢n:

         Esta functi¢n retorna un l¢gico indicando si el fichero tiene
         formato GIF o no.

         El resto de las funciones GIF usan esta funci¢n para determinar
         si deben retornar valores.

    Valor de Retorno:

         .T. si el fichero es GIF o .F. si no tiene formato GIF o no existe.

    Ejemplo:

         ? gifIsGIF ( "c:\xx\giveme.gif" )

See Also: "gifVersion()" 


    gifIsPalette()

         Determina si el GIF tiene paleta

    Sintaxis:

         gifIsPalette( cFile ) -> lPalette

         cFile : El nombre del fichero GIF

    Descripci¢n:

         Esta funci¢n determina si debe usarse la paleta del sistema o si
         el GIF tiene su propia paleta.

    Valor de Retorno:

         Un l¢gico indicando si tiene paleta o NIL si el fichero no tiene
         formato GIF.

    Ejemplo:

         ? gifIsPalette ( "c:\xx\giveme.gif" )

See Also: "gifIsGIF()" 


    gifShow256()

         Muestra un GIF 320x200x256 en la pantalla

                                 - Page 102 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Sintaxis:

         gifShow256 ( cFile ) -> lError

         cFile : Nombre del fichero GIF

    Descripci¢n:

         El GIF puede ser del tama¤o que se desee. Olvidese de la limitaci¢n
         de las 64kb.

         Solo trabaja si existe una VGA en el sistema.
         La funci¢n no espera tecla, ni restaura el modo de v¡deo, as¡ pues
         esto es dejado a la responsabilidad del programador. Esto es muy
         util cuando se desea mostrar varios GIF y no se desea volver a
         modo texto entre uno y otro.
         Esta funci¢n ha sido probada con GIF de 320x200x32, 320x200x64 y
         320x200x256.

    Valor de Retorno:

         .T. si todo ha ido bien o .F. si el fichero no se encuentra o no
         tiene formato GIF.

    Ejemplo:

         If IsVGA()
           nOldMode := SetVGA256()
           If gifShow256 ( "f:\xxx\giveme.gif" )
             Inkey(0)
           EndIf
           VideoMode ( nOldMode )
         EndIf

See Also: "GifShowVESA()" 


    gifShowVESA()

         Muestra un GIF en modos VESA

    Sintaxis:

         gifShowVESA ( cFile ) -> lError

         cFile : El nombre del fichero GIF

    Descripci¢n:

         El GIF puede ser del tama¤o que se desee. Olvidese de la limitaci¢n
         de las 64kb.

         Solo trabaja si existe una SVGA VESA compatible en el sistema.
         La funci¢n no espera tecla, ni restaura el modo de v¡deo, as¡ pues

                                 - Page 103 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         esto es dejado a la responsabilidad del programador. Esto es muy
         util cuando se desea mostrar varios GIF y no se desea volver a
         modo texto entre uno y otro.
         Esta funci¢n ha sido probada con GIF de 640x400x256, 640x480x256,
         800x600x256, 1024x768x256 y 1280x1024x256.

    Valor de Retorno:

         .T. si todo ha ido bien o .F. si el fichero no se encuentra o no
         tiene formato GIF.

    Ejemplo:

         If IsVESA()
           cFile    := "f:\xxx\car.gif"
           nOldMode := VideoMode()
           nNewMode := SearchVESA( cFile )
           If nNewMode != NIL
             VESAMode( nNewMode )
             If gifShowVESA ( cFile )
               Inkey(0)
             EndIf
             VideoMode ( nOldMode )
           EndIf
         EndIf

See Also: "gifShow256()" "SearchVESA()" 


    gifVersion()

         Retorna la versi¢n de un GIF

    Sintaxis:

         gifVersion ( cFile ) -> nVersion

         cFile : El nombre del fichero GIF

    Descripci¢n:

         Esta funci¢n retorna la versi¢n del formato GIF del fichero.

    Valor de Retorno:

         Un string que contiene la versi¢n en la forma GIF89a o NIL si
         el fichero no tiene formato GIF.

    Ejemplo:

         ? gifVersion ( "c:\xx\giveme.gif" )

See Also: "gifIsGIF()" 



                                 - Page 104 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    gifX()

         Retorna la anchura de un GIF

    Sintaxis:

         gifX ( cFile ) -> nWidth

         cFile : El nombre del fichero GIF

    Descripci¢n:

         Retorna el ancho, en pixels, de una imagen GIF.

    Valor de Retorno:

         Un n£mero indicando el n£mero de pixels de ancho o NIL si el
         fichero no tiene formato GIF.

    Ejemplo:

         ? gifX ( "c:\xx\giveme.gif" )

See Also: "gifIsGIF()" "gifX()" 


    gifY()

         Retorna la altura de un GIF

    Sintaxis:

         gifX ( cFile ) -> nLong

         cFile : El nombre del fichero GIF

    Descripci¢n:


         Esta funci¢n retorna el alto, en pixels, de una imagen GIf.

    Valor de Retorno:

         Un n£mero indicando el n£mero de pixels de alto o NIL si el
         fichero no tiene formato GIF.

    Ejemplo:

         ? gifY ( "c:\xx\giveme.gif" )

See Also: "gifIsGIF()" "gifX()" 


    GraphBar()


                                 - Page 105 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Gr fico de barras con Clipper!!

    Sintaxis:

         GraphBar( cTitle, aArray1, aArray2, aArray3, aArray4, ;
                   nTypeBar ) -> NIL

         cTitle   : T¡tulo del gr fico
         aArray1  : Contiene la leyenda y un array de valores para el gr fico
         aArray2  :  "
         aArray3  :  "
         aArray4  :  "
         nTypeBar : Tipo de barra
                      0 : por defecto, normal
                      1 : piramidal ascendente
                      2 : piramidal descendente
                      3 : cil¡ndrica

    Descripci¢n:

         Genera un gr fico de barras en Clipper. Solo trabaja en EGA y VGA.

         El n£mero de barras ser  el mayor de los 4 subarrays.

         Esta funci¢n est  hecha con otras funciones de FAST.lib, as¡ pues,
         puede hacer las suyas propias. El £nico objetivo es salvar algo de
         de tiempo en su trabajo.

         FAST ofrece la infraestructura para crear estas funciones.
         Lo £nico que necesita son unos simples conocimientos de geometr¡a
         plana.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SetVGA ()
         GraphBar ( "GraphBar Demo", ;
                    { "HP",       { 481, 212, 212, 266, 699, 312 } }, ;
                    , ;
                    { "DEC",      { 481, 212, 212, 266, 699, 312 } }, ;
                    { "IBM",      { 281, 332, 212, 557, 499, 612 } }, ;
                    1 )
         Inkey (0)
         TxtMode ()

See Also: "GraphBar2()" "GraphBar3()" "GraphEllipse()" "GraphTart()" 


    GraphBar2()

         Otro gr fico de barras con Clipper!!


                                 - Page 106 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Sintaxis:

         GraphBar2( cTitle, aArray, nTypeBar ) -> NIL

         cTitle   : T¡tulo del gr fico
         aArray   : Un array bidimensional con los valores
         nTypeBar : Tiopo de barra
                      0 : por defecto, normal
                      1 : piramidal ascendente
                      2 : piramidal descendente
                      3 : cil¡ndrica

    Descripci¢n:

         Genera un gr fico de barras en Clipper. Solo trabaja en EGA y VGA.

         Esta funci¢n est  hecha con otras funciones de FAST.lib, as¡ pues,
         puede hacer las suyas propias. El £nico objetivo es salvar algo de
         de tiempo en su trabajo.

         FAST ofrece la infraestructura para crear estas funciones.
         Lo £nico que necesita son unos simples conocimientos de geometr¡a
         plana.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SetVGA ()
         GraphBar2( "GraphBar2 Demo", ;
                    { { 481, 212, 212, 266, 699, 312 }, ;
                      { ... }, ;
                      { 481, 212, 212, 266, 699, 312 }, ;
                      { 281, 332, 212, 557, 499, 612 } ;
                    }, ;
                    2 )
         Inkey (0)
         TxtMode ()

See Also: "GraphBar()" "GraphBar3()" "GraphEllipse()" "GraphTart()" 


    GraphBar3()

         Y otro gr fico de barras con Clipper!!

    Sintaxis:

         GraphBar3( cTitle, aItems, aArray, nTypeBar ) -> NIL

         cTitle   : T¡tulo del gr fico
         aItems   : Un array con leyendas
         aValues  : Un array con los valores

                                 - Page 107 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         nTypeBar : Tipo de barra
                      0 : por defecto, normal
                      1 : piramidal ascendente
                      2 : piramidal descendente
                      3 : cil¡ndrica

    Descripci¢n:

         Genera un gr fico de barras en Clipper. Solo trabaja en EGA y VGA.

         Esta funci¢n est  hecha con otras funciones de FAST.lib, as¡ pues,
         puede hacer las suyas propias. El £nico objetivo es salvar algo de
         de tiempo en su trabajo.

         FAST ofrece la infraestructura para crear estas funciones.
         Lo £nico que necesita son unos simples conocimientos de geometr¡a
         plana.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SetVGA ()
         GraphBar3( "GraphBar3 Demo", ;
                    { "Item1", "Item2", "Item3", "Item4" }, ;
                    {     481,     212,     212,     266 }, ;
                    3 )
         Inkey (0)
         TxtMode ()

See Also: "GraphBar()" "GraphBar2()" "GraphEllipse()" "GraphTart()" 


    GraphEllipse()

         Gr ficos de tarta con Clipper!!

    Sintaxis:

         GraphEllipse ( nX, nY, nFocus, aArray ) -> NIL

         nX     : Coordenada X del centro de la elipse
         nY     : Coordenada Y del centro de la elipse
         nFocus : Foco A de la elipse
         aArray : Un array de valores para el gr fico. Permite tantos
                  elementos como se desee.

    Descripci¢n:

         Genera un gr fico de barras en Clipper. Solo trabaja en EGA y VGA.

         Esta funci¢n no tiene la opci¢n de poner t¡tulos y leyendas dado
         que permite al usuario posicionar el gr fico en cualquier posici¢n.

                                 - Page 108 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Es importante resaltar que el gr fico ser  dibujado en zonas de
         diferentes colores, comenzando con el color 1 en la primera zona,
         2 en la segunda y as¡ sucesivamente hasta 15. Este proceso ser 
         recursivo si hay m s de 15 zonas. Esto es muy importante en orden
         a determinar el color de cada leyenda del gr fico.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SetVGA()
         cTitle := "Fast Graphic System"
         GraphEllipse( 320, 240, 100, { 17, 3, 15, 60, 15 } )
         DispStr ( cTitle, 320 - Len ( cTitle ) * 4, 370, 15, 0 )
         Legend ( 320, 460, 15, 4, "Fast Library" )
         Inkey (0)
         TxtMode ()

See Also: "Legend()" "DispStr()" "GraphBar()" "GraphBar2()" "GraphTart()" 


    GraphLine()

         Gr fico de l¡neas con Clipper!!

    Sintaxis:

         GraphLine( cTitle, aArray ) -> NIL

         cTitle : T¡tulo del gr fico
         aArray : Un array bidimensional con los valores

    Descripci¢n:

         Genera un gr fico de barras en Clipper. Solo trabaja en EGA y VGA.

         Esta funci¢n est  hecha con otras funciones de FAST.lib, as¡ pues,
         puede hacer las suyas propias. El £nico objetivo es salvar algo de
         de tiempo en su trabajo.

         FAST ofrece la infraestructura para crear estas funciones.
         Lo £nico que necesita son unos simples conocimientos de geometr¡a
         plana.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SetVGA ()
         GraphLine( "GraphLine Demo", ;

                                 - Page 109 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


                    { { 481, 212, 212, 266, 699, 312 }, ;
                      { ... }, ;
                      { 481, 212, 212, 266, 699, 312 }, ;
                      { 281, 332, 212, 557, 499, 612 } ;
                    } )
         Inkey (0)
         TxtMode ()

See Also: "GraphBar()" "GraphBar2()" "GraphEllipse()" "GraphZone()" 


    GraphTart()

         Otro gr fico de tarta con Clipper!!

    Sintaxis:

         GraphTart ( nX, nY, nRadius, aArray ) -> NIL

         nX      : Coordenada X del centro de la circunferencia
         nY      : Coordenada Y del centro de la Circunferencia
         nRadius : Radio de la circunferencia
         aArray  : Un array de valores para el gr fico. Permite tantos
                   elementos como se desee.

    Descripci¢n:

         Genera un gr fico de barras en Clipper. Solo trabaja en EGA y VGA.

         Esta funci¢n est  hecha con otras funciones de FAST.lib, as¡ pues,
         puede hacer las suyas propias. El £nico objetivo es salvar algo de
         de tiempo en su trabajo.

         FAST ofrece la infraestructura para crear estas funciones.
         Lo £nico que necesita son unos simples conocimientos de geometr¡a
         plana.

         Esta funci¢n no tiene la opci¢n de poner t¡tulos y leyendas dado
         que permite al usuario posicionar el gr fico en cualquier posici¢n.

         Es importante resaltar que el gr fico ser  dibujado en zonas de
         diferentes colores, comenzando con el color 1 en la primera zona,
         2 en la segunda y as¡ sucesivamente hasta 15. Este proceso ser 
         recursivo si hay m s de 15 zonas. Esto es muy importante en orden
         a determinar el color de cada leyenda del gr fico.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SetVGA()
         cTitulo := "Fast Graphic System"
         GraphTart ( 320, 240, 100, { 17, 3, 15, 60, 15 } )

                                 - Page 110 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         DispStr ( cTitulo, 320 - Len ( cTitulo ) * 4, 370, 15, 0 )
         Legend ( 320, 460, 15, 4, "Fast Library" )
         Inkey (0)
         TxtMode ()

See Also: "Legend()" "DispStr()" "GraphBar()" "GraphBar2()" "GraphEllipse()" 


    GraphZone()

         Gr fico de zonas con Clipper!!

    Sintaxis:

         GraphZone( cTitle, aArray ) -> NIL

         cTitle : T¡tulo del gr fico
         aArray : Un array bidimensional con los valores

    Descripci¢n:

         Genera un gr fico de barras en Clipper. Solo trabaja en EGA y VGA.

         Esta funci¢n est  hecha con otras funciones de FAST.lib, as¡ pues,
         puede hacer las suyas propias. El £nico objetivo es salvar algo de
         de tiempo en su trabajo.

         FAST ofrece la infraestructura para crear estas funciones.
         Lo £nico que necesita son unos simples conocimientos de geometr¡a
         plana.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SetVGA ()
         GraphZone( "GraphZone Demo", ;
                    { { 481, 212, 212, 266, 699, 312 }, ;
                      { ... }, ;
                      { 481, 212, 212, 266, 699, 312 }, ;
                      { 281, 332, 212, 557, 499, 612 } ;
                    } )
         Inkey (0)
         TxtMode ()

See Also: "GraphBar()" "GraphBar2()" "GraphEllipse()" "GraphLine()" 


    IsCGA()

         Determina si el sistema tiene tarjeta CGA

    Sintaxis:

                                 - Page 111 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         IsCGA() -> lCGA

    Descripci¢n:

         Determina si el sistema tiene tarjeta CGA y retorna un l¢gico
         indicando el resultado.

    Valor de Retorno:

         .T. si existe y .F. si no.

    Ejemplo:

         If IsCGA()
           ? "Hay una tarjeta CGA"
         EndIf

See Also: "IsEGA()" "IsHerc()" "IsLCD()" "IsVGA()" 


    IsEGA()

         Determina si el sistema tiene tarjeta EGA

    Sintaxis:

         IsEGA() -> lEGA

    Descripci¢n:

         Determina si el sistema tiene tarjeta EGA y retorna un l¢gico
         indicando el resultado.

    Valor de Retorno:

         .T. si existe y .F. si no.

    Ejemplo:

         If IsEGA()
           ? "Hay una tarjeta EGA"
         EndIf

See Also: "IsCGA()" "IsHerc()" "IsLCD()" "IsVGA()" 


    IsHerc()

         Determina si el sistema tiene tarjeta Hercules

    Sintaxis:

         IsHerc() -> lHerc


                                 - Page 112 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Descripci¢n:

         Determina si el sistema tiene tarjeta Hercules y retorna un l¢gico
         indicando el resultado.

    Valor de Retorno:

         .T. si existe y .F. si no.

    Ejemplo:

         If IsHerc()
           ? "Hay una tarjeta Hercules"
         EndIf

See Also: "IsCGA()" "IsEGA()" "IsLCD()" "IsVGA()" 


    IsLCD()

         Determina si el existe un monitor LCD

    Sintaxis:

         IsLCD() -> lLCD

    Descripci¢n:

         Determina si el sistema tiene monitor LCD y retorna un l¢gico
         indicando el resultado.

    Valor de Retorno:

         .T. si existe y .F. si no.

    Ejemplo:

         If IsLCD()
           ? "Hay una monitor LCD"
         EndIf

See Also: "IsCGA()" "IsEGA()" "IsHerc()" "IsVGA()" 


    IsMono()

         Determina si el sistema tiene tarjeta VGA mono

    Sintaxis:

         IsMono() -> lVGAMono

    Descripci¢n:

         Determina si el sistema tiene tarjeta VGA mono y retorna un l¢gico

                                 - Page 113 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         indicando el resultado.

    Valor de Retorno:

         .T. si existe y .F. si no.

    Ejemplo:

         If IsMono()
           ? "Hay una tarjeta VGA mono"
         EndIf

See Also: "IsCGA()" "IsEGA()" "IsHerc()" "IsLCD()" "IsVGA()" "IsVESA()" 


    IsVESA()

         Determina si el sistema gr fico es compatible con VESA

    Sintaxis:

         IsVESA() -> lVESA

    Descripci¢n:

         Retorna un l¢gico indicando si el sistema es compatible con el
         standard desarrollado por el comit‚ VESA. Si su tarjeta gr fico no
         es compatible con VESA contacte con su distribuidor y probablemente
         habr  algun driver que permite a su tarjeta la emulaci¢n VESA.

    Valor de Retorno:

         Un l¢gico indicando si es compatible.

    Ejemplo:

         If IsVESA()
           ? VESAVer()
         EndIf

See Also: "IsVGA()" "VESAMode()" "VESAOEM()" "VESAVer()" 


    IsVGA()

         Determina si el sistema tiene tarjeta VGA


    Sintaxis:

         IsVGA() -> lVGA

    Descripci¢n:

         Determina si el sistema tiene tarjeta VGA y retorna un l¢gico

                                 - Page 114 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         indicando el resultado.

    Valor de Retorno:

         .T. si existe y .F. si no.

    Ejemplo:

         If IsVGA()
           ? "Hay una tarjeta VGA"
         EndIf

See Also: "IsCGA()" "IsEGA()" "IsHerc()" "IsLCD()" "IsMono()" "IsVESA()" 


    Legend()

         Dibuja y rellena un cuadro con texto opcional

    Sintaxis:

         Legend ( nX, nY, nSize, nColor, cText ) -> NIL

         nX      : Coordenada X superior izquierda del cuadro
         nY      : Coordenada Y superior izquierda del cuadro
         nSize   : Tama¤o del cuadro
         nColor  : Color del cuadro
         cText   : Un texto asociado con este color en la leyenda

    Descripci¢n:

         Est  funci¢n ya exist¡a en la versi¢n 1.25 pero no estaba
         documentada ya que era usada internamente por GraphBar().

         Ahora, con la inclusi¢n de GraphTart() el usuario puede crear
         sus propias leyendas donde y cuando guste dado que ha sido
         documentada.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SetVGA()
         cTitulo := "Fast Graphic System"
         GraphTart ( 320, 240, 100, { 17, 3, 15, 60, 15 } )
         DispStr ( cTitulo, 320 - Len ( cTitulo ) * 4, 370, 15, 0 )
         Legend ( 320, 460, 15, 4, "Fast Library" )
         Inkey (0)
         TxtMode ()

See Also: "DispStr()" "GraphBar()" "GraphTart()" 



                                 - Page 115 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Origin()

         Modifica el origen de v¡deo en el CRT controller

    Sintaxis:

         Origin( nX, nY ) -> NIL

         nX : Coordenada X
         nY : Coordenada Y

    Descripci¢n:

         Accede al CRT controller y fija la posici¢n relativo dada como
         comoienzo de la memoria de v¡deo.

         Por ejemplo, si se llama a Origin( 5, 6 ) se indica que la nueva
         posici¢n X es desplazada 5 pixels y la Y es desplazada 6 pixels.
         Con esto la imagen descender  6 l¡neas y se mover  5 columnas hacia
         la derecha.

         Los movimientos son extraordinariamente r pidos.

    Valor de Retorno:

         Nada.

    Ejemplo:

         gifShow256( "demo.gif" )
         For nInd := 0 To 200 Step 2
           Origin( 0, nInd )
         Next


    Outxy()

         Escribe un string en la pantalla en todos los modos

    Sintaxis:

         Outxy( nX, nY, cString, nColor ) -> NIL

         nX      : Coordenada X
         nY      : Coordenada Y
         cString : El string a escribir
         nColor  : El color de los caracteres

    Descripci¢n:

         Escribe un string en modo gr fico. La funci¢n trabaja en todos
         los modos de v¡deo, CGA, Herc, EGA, VGA y SVGA.

    Valor de Retorno:


                                 - Page 116 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Nada.

    Ejemplo:

         Outxy( 20, 10, "Write in graphic mode", 10 )

See Also: "DispChar()" "DispStr()" 


    pcxBitsPixel()

         Retorna el n£mero de bits por pixel de un PCX

    Sintaxis:

         pcxBitsPixel ( cFile ) -> nBitsPixel

         cFile : Nombre del fichero PCX

    Descripci¢n:

         Esta funci¢n retorna el n£mero de bits por pixel de un fichero
         PCX si ‚ste existe y tiene formato PCX. Caso contrario retorna
         NIL.

    Valor de Retorno:

         El n£mero de bits por pixel o NIL si el fichero no existe o no
         tiene formato PCX.

    Ejemplo:

         ? pcxBitsPixel ( "c:\fast\lib\fast.pcx" )

See Also: "pcxIsPCX()" 


    pcxIsPCX()

         Inidica si un fichero tiene formato PCX o no

    Sintaxis:

         pcxIsPCX ( cFile ) -> lEsPCX

         cFile : Nombre del fichero PCX

    Descripci¢n:

         Esta funci¢n retorna un l¢gico indicando si el fichero es PCX o no.

         El resto de las funciones PCX usan ‚sta para determinar cuando
         deben retornar valores.

    Valor de Retorno:

                                 - Page 117 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         .T. si el fichero es un PCX o .F. si el fichero no tiene formato
         PCX o no existe.

    Ejemplo:

         ? pcxIsPCX ( "c:\fast\lib\fast.pcx" )


    pcxShow()

         Muestra un PCX 16 colores en la pantalla

    Sintaxis:

         pcxShow ( cFile, [lPalette], [nX], [nY] ) -> lError

         cFile    : Nombre del fichero PCX
         lPalette : UN l¢gico indicando si se desea la paleta del PCX o la
                    del sistema. Si es .T. prevalece la paleta del PCX y si
                    es .F. se fijar  la paleta del sistema. Por defecto .T.
                    Esta opci¢n es muy £til para programas tipo PaintBrush
                    for Windows que destruyen la paleta.
         nX       : Coordenada inicial X donde se desea ver el PCX.
                    Por defecto es 0. Puede ser asignado cualquier valor
                    entre 0 y el n£mero de pixels horizontales del modo
                    actual. Por ejemplo, si es VGA, entre 0 y 639.
         nY       : Coordenada inicial Y donde se desea ver el PCX.
                    Por defecto es 0. Puede ser asignado cualquier valor
                    entre 0 y el n£mero de pixels verticales del modo
                    actual. Por ejemplo, si es VGA, entre 0 y 479.

    Descripci¢n:

         El PCX puede ser de cualquier tama¤o. Olv¡dese de la limitaci¢n
         de los 64kb.

         Solo trabaja si el sistema dispone de VGA.

         Esta funci¢n no activa el modo de v¡deo al entrar ni lo desactiva
         al salir. Esto es muy £til cuando se desea mostrar varios PCX uno
         tras otro y no se desea cambiar a modo texto entre ellos.

         El PCX puede tener cualquier resoluci¢n, esto es, puede ser por
         ejemplo 20x100...

    Valor de Retorno:

         .T. si todo va bien o .F. si el fichero no existe, el sistema no
         tiene VGA o el fichero no tiene formato PCX.

    Ejemplo:

         nOldMode := SetVGA()
         IF pcxShow( "c:\fast\lib\fast1.pcx", .T. 10, 10 )

                                 - Page 118 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


           Inkey( 0 )
         ENDIF
         VideoMode( nOldMode )

See Also: "pcxShow256()" "pcxShowVESA()" 


    pcxShow256()

         Muestra un fichero PCX de 256 colores en VGA

    Sintaxis:

         pcxShow256 ( cFile, [lPalette], [lDegrade], [nX], [nY] ) -> lError

         cFile    : Nombre del fichero PCX
         lPalette : Un l¢gico indicando si se desea fijar la paleta del PCX
                    o la del sistema. Si es .T. prevalece la del PCX y si
                    es .F. se fijar  la del sistema. Por defecto es .T.
                    Esta opci¢n es muy £til para programas tipo PaintBrush
                    for Windows que destruyen la paleta.
         lDegrade : Un l¢gico indicando si se desea fijar la paleta en una
                    simulaci¢n de degradado progresivo (.T.) o si se desea
                    fijar la paleta de forma r pida (.F.). Por defecto es .F.
                    Solo disponible cuando lPalette es .T.
         nX       : Coordenada inicial X donde se desea ver el PCX.
                    Por defecto es 0. Puede ser asignado cualquier valor
                    entre 0 y el n£mero de pixels horizontales del modo
                    actual. 0-319.
         nY       : Coordenada inicial Y donde se desea ver el PCX.
                    Por defecto es 0. Puede ser asignado cualquier valor
                    entre 0 y el n£mero de pixels verticales del modo
                    actual. 0-199.

    Descripci¢n:

         El PCX puede ser de cualquier tama¤o. Olv¡dese de la limitaci¢n
         de los 64kb.

         Solo trabaja si el sistema dispone de VGA.

         Esta funci¢n no activa el modo de v¡deo al entrar ni lo desactiva
         al salir. Esto es muy £til cuando se desea mostrar varios PCX uno
         tras otro y no se desea cambiar a modo texto entre ellos.

         El PCX puede tener cualquier resoluci¢n, esto es, puede ser por
         ejemplo 20x100...

    Valor de Retorno:

         .T. si todo va bien o .F. si el fichero no existe, el sistema no
         tiene VGA o el fichero no tiene formato PCX.

    Ejemplo:


                                 - Page 119 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         //
         // Muestra un PCX de 256 colores en X=20/Y=25
         //
         nOldMode := SetVGA256()
         IF pcxShow256( "c:\fast\lib\m_roibal.pcx", , , 20, 25 )
           Inkey( 0 )
         ENDIF
         VideoMode( nOldMode )

See Also: "pcxShow()" "pcxShowVESA()" 


    pcxShowVESA()

         Muestra un fichero PCX de 256 colores en SVGA VESA

    Sintaxis:

         pcxShowVESA( cFile, [lPalette], [lDegrade], [nX], [nY] ) -> lError

         cFile    : Nombre del fichero PCX
         lPalette : Un l¢gico indicando si se desea fijar la paleta del PCX
                    o la del sistema. Si es .T. prevalece la del PCX y si
                    es .F. se fijar  la del sistema. Por defecto es .T.
                    Esta opci¢n es muy £til para programas tipo PaintBrush
                    for Windows que destruyen la paleta.
         lDegrade : Un l¢gico indicando si se desea fijar la paleta en una
                    simulaci¢n de degradado progresivo (.T.) o si se desea
                    fijar la paleta de forma r pida (.F.). Por defecto es .F.
                    Solo disponible cuando lPalette es .T.
         nX       : Coordenada inicial X donde se desea ver el PCX.
                    Por defecto es 0. Puede ser asignado cualquier valor
                    entre 0 y el n£mero de pixels horizontales del modo
                    actual. Por ejemplo en 800x600 puede ser 0-799.
         nY       : Coordenada inicial Y donde se desea ver el PCX.
                    Por defecto es 0. Puede ser asignado cualquier valor
                    entre 0 y el n£mero de pixels verticales del modo
                    actual. Por ejemplo en 800x600 puede ser 0-599.

    Descripci¢n:

         El PCX puede ser de cualquier tama¤o. Olv¡dese de la limitaci¢n
         de los 64kb.

         Solo trabaja si el sistema dispone de SVGA.

         Esta funci¢n no activa el modo de v¡deo al entrar ni lo desactiva
         al salir. Esto es muy £til cuando se desea mostrar varios PCX uno
         tras otro y no se desea cambiar a modo texto entre ellos.

         El PCX puede tener cualquier resoluci¢n, esto es, puede ser por
         ejemplo 20x100...

    Valor de Retorno:


                                 - Page 120 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         .T. si todo va bien o .F. si el fichero no existe, el sistema no
         tiene SVGA o el fichero no tiene formato PCX.

    Ejemplo:

         //
         // Muestra un PCX de 256 colores en X=20/Y=25 en SVGA 800x600
         //
         nOldMode := VESAMode( 259 )
         IF pcxShowVESA( "c:\fast\lib\m_roibal.pcx", , , 20, 25 )
           Inkey( 0 )
         ENDIF
         VESMode( nOldMode )

See Also: "pcxShow()" "pcxShow256()" 


    pcxPlanes()

         Retorna el n£mero de planos de un PCX

    Sintaxis:

         pcxPlanes ( cFile ) -> nPlanes

         cFile : Nombre del fichero PCX

    Descripci¢n:

         Esta funci¢n retorna el n£mero de planos de un fichero PCX si
         existe y tiene formato PCX. Caso contrario retorna NIL.

    Valor de Retorno:

         El n£mero de planos o NIL si el fichero no existe o no tiene
         formato PCX.

    Ejemplo:

         ? pcxPlanes ( "c:\fast\lib\fast.pcx" )

See Also: "pcxIsPCX()" 


    pcxPalette()

         Retorna la paleta de un PCX

    Sintaxis:

         pcxPalette ( cFile ) -> cPalette

         cFile : Nombre del fichero PCX

    Descripci¢n:

                                 - Page 121 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Esta funci¢n retorna la paleta de colores de un fichero PCX.
         El resultado no tiene significado si la tarjeta de v¡deo es
         monocroma.

    Valor de Retorno:

         Un string de 48 bytes con la paleta o NIL si el fichero no existe
         o no tiene formato PCX.

    Ejemplo:

         cPalette := pcxPalette ( "c:\fast\lib\fast.pcx" )

See Also: "pcxIsPCX()" 


    pcxResH()

         Retorna la resoluci¢n horizontal de un PCX

    Sintaxis:

         pcxResH ( cFile ) -> nResH

         cFile : Nombre del fichero PCX

    Descripci¢n:

         Esta funci¢n retorna la resoluci¢n horizontal de un fichero PCX si
         existe un tiene formato PCX. Caso contrario retorna NIL.

    Valor de Retorno:

         La resoluci¢n horizontal o NIL si el fichero no existe o no tiene
         formato PCX.

    Ejemplo:

         ? pcxResH ( "c:\fast\lib\fast.pcx" )

See Also: "pcxIsPCX()" "pcxResV()" 


    pcxResV()

         Retorna la resoluci¢n vertical de un PCX

    Sintaxis:

         pcxResV ( cFile ) -> nResV

         cFile : Nombre del fichero PCX

    Descripci¢n:

                                 - Page 122 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Esta funci¢n retorna la resoluci¢n vertical de un fichero PCX si
         existe un tiene formato PCX. Caso contrario retorna NIL.

    Valor de Retorno:

         La resoluci¢n vertical o NIL si el fichero no existe o no tiene
         formato PCX.

    Ejemplo:

         ? pcxResV ( "c:\fast\lib\fast.pcx" )

See Also: "pcxIsPCX()" "pcxResH()" 


    pcxVersion()

         Retorna la versi¢n del formato de un fichero PCX

    Sintaxis:

         pcxVersion ( cFile ) -> cVersion

         cFile : Nombre del fichero PCX

    Descripci¢n:

         Retorna la versi¢n del formato de un fichero PCX si ‚sta es
         conocida.

         Esta funci¢n permite formatos desde 2.5 hasta 3.0. El resto de
         los formato inferiores a 2.5 son compatibles con ‚ste.

    Valor de Retorno:

         Un string con la versi¢n del formato.

    Ejemplo:

         ? pcxVersion ( "c:\fast\lib\fast.pcx" )

See Also: "pcxIsPCX()" 


    pcxX1()

         Retorna la coordenada inicial X del PCX

    Sintaxis:

         pcxX1 ( cFile ) -> cCoorX1

         cFile : Nombre del fichero PCX


                                 - Page 123 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Descripci¢n:

         Retorna la coordenada inicial X del fichero PCX que es usualmente 0.

    Valor de Retorno:

         El valor de la coordenada inicial X.

    Ejemplo:

         ? pcxX1 ( "c:\fast\lib\fast.pcx" )

See Also: "pcxIsPCX()" "pcxX2()" "pcxY1()" "pcxY2()" 


    pcxX2()

         Retorna la coordenada final X del PCX

    Sintaxis:

         pcxX2 ( cFile ) -> cCoorX2

         cFile : Name of the PCX file

    Descripci¢n:

         Retorna la coordenada final X del fichero PCX. Este valor usualmente
         determina el propio ancho del PCX cuando exactamente deber¡a
         calcularse de la siguiente forma:

                nWidth := pcxX2 - pcxX1 + 1

         Dado que habitualmente pcxX1 toma valor 0, el valor pcxX2 + 1
         indica el ancho por si mismo.

    Valor de Retorno:

         El valor del la coordenada final X.

    Ejemplo:

         ? pcxX2 ( "c:\fast\lib\fast.pcx" )

See Also: "pcxIsPCX()" "pcxX1()" "pcxY1()" "pcxY2()" 


    pcxY1()

         Retorna la coordenada inicial Y del PCX

    Sintaxis:

         pcxY1 ( cFile ) -> cCoorY1


                                 - Page 124 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         cFile : Nombre del fichero PCX

    Descripci¢n:

         Retorna la coordenada inicial Y del fichero PCX que es usualmente 0.

    Valor de Retorno:

         El valor de la coordenada inicial Y.

    Ejemplo:

         ? pcxY1 ( "c:\fast\lib\fast.pcx" )

See Also: "pcxIsPCX()" "pcxX1()" "pcxX2()" "pcxY2()" 


    pcxY2()

         Retorna la coordenada final Y del PCX

    Sintaxis:

         pcxY2 ( cFile ) -> cCoorY2

         cFile : Name of the PCX file

    Descripci¢n:

         Retorna la coordenada final Y del fichero PCX. Este valor
         usualmente determina el propio alto del PCX cuando exactamente
         deber¡a calcularse de la siguiente forma:

                nHeight := pcxY2 - pcxY1 + 1

         Dado que habitualmente pcxY1 toma valor 0, el valor pcxY2 + 1
         indica el alto por si mismo.

    Valor de Retorno:

         El valor del la coordenada final Y.

    Ejemplo:

         ? pcxY2 ( "c:\fast\lib\fast.pcx" )

See Also: "pcxIsPCX()" "pcxX1()" "pcxX2()" "pcxY1()" 


    SearchVESA()

         Busca el modo VESA de un fichero GIF

    Sintaxis:


                                 - Page 125 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         SearchVESA ( cFile ) -> nMode

         cFile : El nombre del fichero GIF

    Descripci¢n:

         Lee la cabecera de un fichero GIF y determina el modo de v¡deo
         VESA adecuado para la imagen.

    Valor de Retorno:

         El modo VESA apropiado o NIL si el fichero no existe, no es un
         fichero GIF o el tama¤o del GIF es desconocido.

    Ejemplo:

         cFile    := "f:\xxx\car.gif"           // 1024x768x256
         ? SearchVESA( cFile )                  // VESA mode 261

See Also: "gifColors()" "gifShowVESA()" "gifX()" "gifY()" 


    SetEGA()

         Activa el modo EGA 640x350 16 colores

    Sintaxis:

         SetEGA() -> nOldMode

    Descripci¢n:

         Activa el modo de v¡deo EGA 640x350x16 colores y retorna el modo
         anterior.

         Esta funci¢n es un caso especial de la gen‚rica VideoMode().

    Valor de Retorno:

         El modo de v¡deo anterior.

    Ejemplo:

         SetEGA()

See Also: "VideoMode()" "SetVGA()" "TxtMode()" 


    SetPalette()

         Activa una paleta de colores

    Sintaxis:

         SetPalette( cPalette ) -> NIL

                                 - Page 126 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         cPalette : un string con la nueva paleta

    Descripci¢n:

         Activa una paleta de colores.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SetPalette( cNewPalette )

See Also: "Degrade()" "GetPalette()" "Upgrade()" 


    SetVGA()

         Activa el modo VGA 640x480 16 colores

    Sintaxis:

         SetVGA() -> nOldMode

    Descripci¢n:

         Activa el modo de v¡deo VGA 640x480x16 colores y retorna el modo
         anterior.

         Esta funci¢n es un caso especial de la gen‚rica VideoMode().

    Valor de Retorno:

         El modo de v¡deo anterior.

    Ejemplo:

         SetVGA()

See Also: "SetEGA()" "VideoMode()" "TxtMode()" 


    SetVGA256()

         Activa el modo VGA 320x200x256 colores

    Sintaxis:

         SetVGA256() -> nOldMode

    Descripci¢n:

         Activa el modo de v¡deo VGA 320x200x256 colores y retorna el modo

                                 - Page 127 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         anterior.

         Esta funci¢n es un caso especial de la gen‚rica VideoMode().

    Valor de Retorno:

         El modo de v¡deo anterior.

    Ejemplo:

         SetVGA256()

See Also: "SetEGA()" "VideoMode()" "SetVGA()" "TxtMode()" 


    SetVGA()

         Activa el modo VGA texto 80x25

    Sintaxis:

         TxtMode() -> nOldMode

    Descripci¢n:

         Activa el modo de v¡deo VGA texto 80x25 y retorna el modo
         anterior.

         Esta funci¢n es un caso especial de la gen‚rica VideoMode().

    Valor de Retorno:

         El modo de v¡deo anterior.

    Ejemplo:

         TxtMode()

See Also: "SetEGA()" "VideoMode()" "SetVGA()" 


    Upgrade()

         Fija una paleta de forma progresiva

    Sintaxis:

         Upgrade( cPalette ) -> NIL

         cPalette : Un string de 768 bytes con la paleta actual o con una
                    paleta que se desea sea tomada como referencia para
                    upgrade().

    Descripci¢n:


                                 - Page 128 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Esta funci¢n trabaja en sincronismo con el CRT controller, as¡
         pues, el degradado ofrece un visi¢n de cambio suave y progresivo.

    Valor de Retorno:

         Nada.

    Ejemplo:

         cPalette := GetPalette()
         Degrade( cPalette )
         Upgrade( cPalette )

See Also: "Degrade()" "GetPalette()" 


    VESAMode()

         Activa un modo de v¡deo VESA

    Sintaxis:

         VESAMode( [nMode] ) -> nOldMode

         nMode : El modo de v¡deo VESA a hacer activo:

           VESA 1.0

              0-255   ->   OEM video modes, CGA, EGA, VGA...
                256   ->   640 x  400 x 256 colors Graph
                257   ->   640 x  480 x 256 colors Graph
                258   ->   800 x  600 x  16 colors Graph
                259   ->   800 x  600 x 256 colors Graph
                260   ->  1024 x  768 x  16 colors Graph
                261   ->  1024 x  768 x 256 colors Graph
                262   ->  1280 x 1024 x  16 colors Graph
                263   ->  1280 x 1024 x 256 colors Graph
                264   ->    80 x   60 x  16 colors Text
                265   ->   132 x   25 x  16 colors Text
                266   ->   132 x   43 x  16 colors Text
                267   ->   132 x   50 x  16 colors Text
                268   ->   132 x   60 x  16 colors Text

           VESA 1.2

                269   ->   320 x  200 x 32k colors Graph
                270   ->   320 x  200 x 64k colors Graph
                271   ->   320 x  200 x 16M colors Graph
                272   ->   640 x  480 x 32k colors Graph
                273   ->   640 x  480 x 64k colors Graph
                274   ->   640 x  480 x 16M colors Graph
                275   ->   800 x  600 x 32k colors Graph
                276   ->   800 x  600 x 64k colors Graph
                277   ->   800 x  600 x 16M colors Graph
                278   ->  1024 x  768 x 32k colors Graph

                                 - Page 129 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


                279   ->  1024 x  768 x 64k colors Graph
                280   ->  1024 x  768 x 16M colors Graph
                281   ->  1280 x 1024 x 32k colors Graph
                282   ->  1280 x 1024 x 64k colors Graph
                283   ->  1280 x 1024 x 16M colors Graph

    Descripci¢n:

         Activa un modo de v¡deo via VESA driver. La ventaja de usar este
         driver es que se puede obviar la programaci¢n de las diferentes SVGA
         dado que el driver VESA las unifica.

         El driver existente en muchas BBS < Universal VESA > puede ser
         instalado en un gran n£mero de chip sets. No obstante, se recomienda
         un driver VESA espec¡fico para cada tarjeta dado que estar  m s
         optimizado.

    Valor de Retorno:

         El modo de v¡deo anterior.

    Ejemplo:

         ? VESAMode( 257 )  // activa SVGA 640x480x256 colores

See Also: "IsVESA()" "VESAOEM()" "VESAVer()" 


    VESAOEM()

         Retorna el OEM de un driver VESA

    Sintaxis:

         VESAOEM() -> cOEM

    Descripci¢n:

         Retorna un string con el OEM o fabricante de un driver VESA.

    Valor de Retorno:

         Un string con el nombre del fabricante.

    Ejemplo:

         ? VESAOEM()

See Also: "IsVESA()" "VESAMode()" "VESAVer()" 


    VESAVer()

         Retorna la versi¢n del driver VESA


                                 - Page 130 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Sintaxis:

         VESAVer() -> cVersion

    Descripci¢n:

         Retorna un string de 5 caracteres con la versi¢n del driver VESA,
         sin importar si el driver es soft o est  inclu¡do en la propia
         tarjeta de v¡deo.

    Valor de Retorno:

         Un string como xx.xx con la versi¢n del driver.

    Ejemplo:

         If IsVESA()
           ? VESAVer()
         EndIf

See Also: "IsVESA()" "VESAMode()" "VESAOEM()" 


    VideoMode()

         Retorna y/o cambia el modo de v¡deo

    Sintaxis:

         VideoMode( nNewMode ) -> nOldMode

         nNewMode : El nuevo modo de v¡deo.
                    01 -> 40x25
                    03 -> 80x25
                    15 -> EGA 640x350 Mono
                    16 -> EGA 640x350 Color
                    17 -> VGA 640x480 Mono
                    18 -> VGA 640x480 Color
                    ...

    Descripci¢n:

         Retorna el modo de v¡deo activa y opcionalmente lo cambia al
         modo especificado. Para obtener m s informaci¢n sobre modos de
         v¡deo consulte la extensa bibliograf¡a existente sobre el tema.
         Se recomienda la lista de interrupciones de Ralf Brown que est 
         disponible en muchas BBS.

    Valor de Retorno:

         El modo de v¡deo anterior.

    Ejemplo:

         nOld := VideoMode ( 18 )

                                 - Page 131 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         DispStr ( "Hello", 10, 10, 7, 12 )
         Inkey(0)
         VideoMode ( nOld )




















































                                 - Page 132 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 1, Teclado




    Con estas funciones se centralizan todos los accesos al teclado en
 Clipper.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    ClrBuffer()

         Vacia el buffer de teclado y el valor de Lastkey()

    Sintaxis:

         ClrBuffer() -> NIL

    Descripci¢n:

         ClrBuffer() es una funci¢n de teclado que limpia todas las teclas
         pendientes en el buffer de teclado de Clipper y resetea el valor
         de Lastkey().

    Valor de Retorno:

         Nada.

    Ejemplo:

         ClrBuffer()

See Also: "Inkey2()" "SetLastKey()" 


    FastKey()

         Establece el m ximo ratio de typematic

    Sintaxis:

         FastKey() -> NIL

    Descripci¢n:

         Establace el m¡nimo intervalo de tiempo de typematic y de comienzo
         de auto-repeat.

    Valor de Retorno:

         Nada.

    Ejemplo:


                                 - Page 133 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         FastKey()

See Also: "NormKey()" "SlowKey()" 


    Inkey2()

         Hace lo mismo que Inkey() pero atiende al Setkey()

    Sintaxis:

         Inkey2( nSeconds ) -> NIL

    Descripci¢n:

         La forma de actuar de esta function es exactamente igual a la
         funci¢n standard Inke() de Clipper.lib pero atendiendo a los
         SetKey() definidos en el sistema.

    Valor de Retorno:

         Los mismo que InKey()

    Ejemplo:

         InKey2( 0 )

See Also: "ClrBuffer()" 


    IsAlt()

         Determina si la tecla Alt est  pulsada

    Sintaxis:

         IsAlt() -> lPress

    Descripci¢n:

         Determina si la tecla Alt est  pulsada retornando un valor l¢gico.

    Valor de Retorno:

         Un valor l¢gico indicando si est  pulsada o no.

    Ejemplo:

         If IsAlt()
           Warning ( "Alt est  pulsada" )
         EndIf

See Also: "IsCtrl()" "IsLShift()" "IsRShift()" 



                                 - Page 134 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    IsCaps()

         Determina si la tecla Caps Lock est  activa

    Sintaxis:

         IsCaps( [ lNew ] ) -> lActive

         lNew : a logic value with the new state of Caps lock key

    Descripci¢n:

         Determina si la tecla Caps est  activa retornando un valor l¢gico.

    Valor de Retorno:

         Un valor l¢gico indicando si est  activa o no.

    Ejemplo:

         If IsCaps()
           Warning ( "Capslock est  en ON" )
         EndIf

See Also: "IsInsert()" "IsNum()" "IsScroll()" 


    IsCtrl()

         Determina si la tecla Ctrl est  pulsada

    Sintaxis:

         IsCtrl() -> lPress

    Descripci¢n:

         Determina si la tecla Ctrl est  pulsada retornando un valor l¢gico.

    Valor de Retorno:

         Un valor l¢gico indicando si est  pulsada o no.

    Ejemplo:

         If IsCtrl()
           Warning ( "Ctrl est  pulsada" )
         EndIf

See Also: "IsAlt()" "IsLShift()" "IsRShift()" 


    IsInsert()

         Determina si Insert est  activo

                                 - Page 135 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Sintaxis:

         IsInsert( [ lNew ] ) -> lActive

         lNew : a logic value with the new mode of Insert key

    Descripci¢n:

         Determina si la tecla Ctrl est  pulsada retornando un valor l¢gico.

    Valor de Retorno:

         Un valor l¢gico indicando si est  activa o no.

    Ejemplo:

         If ! IsInsert()
           Warning ( "Insert est  en ON" )
         EndIf

See Also: "IsCaps()" "IsNum()" "IsScroll()" 


    IsLShift()

         Determina si la tecla Left Shift est  pulsada

    Sintaxis:

         IsLShift() -> lPress

    Descripci¢n:

         Determina si la tecla Left Shift est  pulsada retornando un valor
         l¢gico.

    Valor de Retorno:

         Un valor l¢gico indicando si est  pulsada o no.

    Ejemplo:

         If IsLShift()
           Warning ( "Left Shift est  pulsada" )
         EndIf

See Also: "IsAlt()" "IsCtrl()" "IsRShift()" 


    IsNum()

         Determina si la tecla Num Lock est  activa

    Sintaxis:

                                 - Page 136 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         IsNum( [ lNew ] ) -> lActive

         lNew : a logic value with the new state of Num lock key

    Descripci¢n:

         Determina si la tecla Num Lock est  activa retornando un valor
         l¢gico.

    Valor de Retorno:

         Un valor l¢gico indicando si est  activa o no.

    Ejemplo:

         If IsNum()
           Warning ( "Numeric pad est  activo" )
         EndIf

See Also: "IsCaps()" "IsInsert()" "IsScroll()" 


    IsRShift()

         Determina si la tecla Right Shift est  pulsada

    Sintaxis:

         IsRShift() -> lPress

    Descripci¢n:

         Determina si la tecla Right Shift est  pulsada retornando un valor
         l¢gico.

    Valor de Retorno:

         Un valor l¢gico indicando si est  pulsada o no.

    Ejemplo:

         If IsRShift()
           Warning ( "Right shift est  pulsada" )
         EndIf

See Also: "IsAlt()" "IsCtrl()" "IsLShift()" 


    IsScroll()

         Determina si la tecla Scroll Lock est  activa

    Sintaxis:


                                 - Page 137 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         IsScroll( [ lNew ] ) -> lActive

         lNew : a logic value with the new state of Scroll lock key

    Descripci¢n:

         Determina si la tecla Scroll Lock est  pulsada retornando un valor
         l¢gico.

    Valor de Retorno:

         Un valor l¢gico indicando si est  activa o no.

    Ejemplo:

         If IsScroll()
           Warning ( "Scroll lock est  activo" )
         EndIf

See Also: "IsCaps()" "IsInsert()" "IsNum()" 


    KeyScan()

         Extrae un car cter del buffer de teclado

    Sintaxis:

         KeyScan() -> nKey

    Descripci¢n:

         Extrae un caracter del buffer de teclado o para el programa hasta
         que se pulse una tecla.

         KeyScan() retorna un entero identificando la tecla extra¡da del
         buffer de teclado.

                nkey % 256 = ascii code   (0 en teclas de funci¢n)
                nKey / 256 = scan code

    Valor de Retorno:

         La tecla pulsada.

    Ejemplo:

         nKey := KeyScan()
         ? nKey / 256
         ? nKey % 256

See Also: "KeyStuff()" 


    KeyStuff()

                                 - Page 138 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Introduce un car cter en el buffer de teclado

    Sintaxis:

         KeyStuff( nAscii, nCod ) -> NIL

    Descripci¢n:

         Introduce un car cte en el buffer de teclado sin limpiar las teclas
         pendientes en el mismo. Permite teclas de funci¢n.
         Las teclas de funci¢n tienen ascii code 0 e indican su valor en el
         scan code. Las teclas normales (no de funci¢n) indican su valor en
         el ascii code y su scan code es 0.

    Valor de Retorno:

         Nada.

    Ejemplo:

         nKey := KeyScan()
         KeyStuff ( nKey % 256, nKey / 256 )

See Also: "KeyScan()" 


    NormKey()

         Establece el ratio normal de typematic

    Sintaxis:

         NormKey() -> NIL

    Descripci¢n:

         Establace el intervalo normal de tiempo de typematic y de comienzo
         de auto-repeat.

    Valor de Retorno:

         Nada.

    Ejemplo:

         NormKey()

See Also: "FastKey()" "SlowKey()" 


    SetLastKey()

         Establece el valor de LastKey()


                                 - Page 139 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Sintaxis:

         SetLastKey( nKey ) -> NIL

    Descripci¢n:

         SetLastKey() es una funci¢n de teclado que limpia todas las teclas
         pendientes en el buffer de teclado de Clipper y establece el valor
         de LastKey().

    Valor de Retorno:

         Nada.

    Ejemplo:

         #include "inkey.ch"

         SetLastKey( K_ESC )

See Also: "ClrBuffer()" 


    SlowKey()

         Establece el m¡nimo ratio de typematic

    Sintaxis:

         SlowKey() -> NIL

    Descripci¢n:

         Establace el m ximo intervalo de tiempo de typematic y de comienzo
         de auto-repeat.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SlowKey()

See Also: "FastKey()" "NormKey()" 










                                 - Page 140 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 1, Redes y Multitaskers




    Dispone aqu¡ de unas pocas funciones para hacer su trabajo con Novell,
  Windows y DesqView un poco menos aburrido.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    DesqVer()

         Returna la versi¢n de DesqView

    Sintaxis:

         DesqVer() -> cVersion

    Descripci¢n:

         Retorna la versi¢n de DesqView o "00.00" si DesqView no est 
         en ejecuci¢n.

    Valor de Retorno:

         Un string con la versi¢n de DesqView o "00.00".

    Ejemplo:

         If IsDesqView()
           Warning( "DesqView Versi¢n: " + DesqVer() )
         EndIf

See Also: "IsDesqView()" 


    IsBanyan()

         Determina si una red Banyan Vines est  presente

    Sintaxis:

         IsBanyan() -> lLAN

    Descripci¢n:

         Determina si una red Banyan Vines est  presente y activa.

    Valor de Retorno:

         Un valor l¢gico.

    Ejemplo:


                                 - Page 141 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         If IsBanyan()
           Warning ( "Banyan Vines est  presente" )
         EndIf

See Also: "IsDesqView()" "IsLANtastic()" "IsMSLAN()" "IsNovell()" "IsWin3()" 


    IsDesqView()

         Determina si Desqview est  en ejecuci¢n

    Sintaxis:

         IsDesqView() -> lLoaded

    Descripci¢n:

         Determina si DesqView est  instalado y en ejecuci¢n.

    Valor de Retorno:

         Un valor l¢gico.

    Ejemplo:

         If IsDesqView()
           Warning( "Desqview est  presente" )
         EndIf

See Also: "IsBanyan()" "IsLANtastic()" "IsMSLAN()" "IsNovell()" "IsWin3()" 


    IsLANtastic()

         Determina si una red LANtastic est  presente

    Sintaxis:

         IsLANtastic() -> lLAN

    Descripci¢n:

         Determina si una red LANtastic est  presente y activa.

    Valor de Retorno:

         Un valor l¢gico.

    Ejemplo:

         If IsLANtastic()
           Warning ( "LANTastic est  presente" )
         EndIf

See Also: "IsBanyan()" "IsDesqView()" "IsMSLAN()" "IsNovell()" "IsWin3()" 

                                 - Page 142 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'




    IsMSLAN()

         Determina si una red MS LAN est  presente

    Sintaxis:

         IsMSLAN() -> lMSLAN

    Descripci¢n:

         Determina si una red MS LAN est  presente y activa.

    Valor de Retorno:

         Un valor l¢gico.

    Ejemplo:

         If IsMSLAN()
           Warning ( "MS LAN est  presente. Hola Bill" )
         EndIf

See Also: "IsBanyan()" "IsDesqView()" "IsLANtastic()" "IsNovell()" "IsWin3()" 


    IsNovell()

         Determina si una red Novell est  presente

    Sintaxis:

         IsNovell() -> lNovell

    Descripci¢n:

         Determina si una red Novell Netware est  presente y activa.

    Valor de Retorno:

         Un valor l¢gico.

    Ejemplo:

         If ! IsNovell()
           Warning ( "Netware, mejor" )
         EndIf

See Also: "IsBanyan()" "IsDesqView()" "IsLANtastic()" "IsMSLAN()" "IsWin3()" 


    IsWin3()

         Determina si Windows 3 est  presente

                                 - Page 143 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Sintaxis:

         IsWin3() -> lWin

    Descripci¢n:

         Determina si Windows 3 est  presente y activo.

    Valor de Retorno:

         Un valor l¢gico.

    Ejemplo:

         If IsWin3()
           Warning ( "Cierre la ventana" )
         EndIf

See Also: "IsBanyan()" "IsDesqView()" "IsLANtastic()" "IsMSLAN()" "IsNovell()" 


    nwAbortCap()

         Cancela una captura LPT de Novell Netware

    Sintaxis:

         nwAbortCap( nPort ) -> nError

         nPort : LPT port. 0 = LPT1, 1 = LPT2, 2 = LPT3

    Descripci¢n:

         Cancela una captura de un puerto remoto y aborta los trabajos
         pendientes en la cola.

    Valor de Retorno:

         Un valor num‚rico indicando un error o 0 si no hay error.

    Ejemplo:

         If nwAbortCap() == 0
           Warning ( "Captura ok" )
         EndIf

See Also: "nwBeginCap()" "nwEndCap()" "nwFlushCap()" 


    nwBeginCap()

         Arranca una captura LPT de Novell Netware

    Sintaxis:

                                 - Page 144 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         nwBeginCap( nPort ) -> nError

         nPort : LPT port. 0 = LPT1, 1 = LPT2, 2 = LPT3

    Descripci¢n:

         Comienza una captura de un puerto remoto.

    Valor de Retorno:

         Un valor num‚rico indicando un error o 0 si no hay error.

    Ejemplo:

         If nwBeginCap() == 0
           Warning ( "Captura ok" )
         EndIf

See Also: "nwAbortCap()" "nwEndCap()" "nwFlushCap()" 


    nwEndCap()

         Finaliza una captura LPT de Novell Netware

    Sintaxis:

         nwEndCap( nPort ) -> nError

         nPort : LPT port. 0 = LPT1, 1 = LPT2, 2 = LPT3

    Descripci¢n:

         Finaliza la captura de un puerto remoto abortando los trabajos
         pendientes en la cola.

    Valor de Retorno:

         Un valor num‚rico indicando un error o 0 si no hay error.

    Ejemplo:

         If nwEndCap() == 0
           Warning ( "Captura ok" )
         EndIf

See Also: "nwAbortCap()" "nwBeginCap()" "nwFlushCap()" 


    nwFlushCap()

         Refresca una captura LPT de Novell Netware

    Sintaxis:

                                 - Page 145 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         nwFlushCap( nPort ) -> nError

         nPort : LPT port. 0 = LPT1, 1 = LPT2, 2 = LPT3

    Descripci¢n:

         Refresca la informaci¢n de la cola LPT de un puerto remoto.

    Valor de Retorno:

         Un valor num‚rico indicando un error o 0 si no hay error.

    Ejemplo:

         If nwFlushCap() == 0
           ...
         EndIf

See Also: "nwAbortCap()" "nwBeginCap()" "nwEndCap()" 


    nwLogout()

         Se despide de un sistema Novell Netware

    Sintaxis:

         nwLogout() -> nError

    Descripci¢n:

         Dice adios a Novell cancelando todos los trabajos y servicios
         pendientes.

    Valor de Retorno:

         Un valor num‚rico indicando un error o 0 si no hay error.

    Ejemplo:

         If nwLogout() == 0
           Warning ( "Adios." )
         EndIf

See Also: "nwStation()" 


    nwStation()

         Retorna el n£mero de estaci¢n de la red Novell Netware

    Sintaxis:

         nwStation() -> nConnect

                                 - Page 146 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Descripci¢n:

         Retorna el n£mero de conexi¢n a la red.

    Valor de Retorno:

         Un valor num‚rico indicando el n£mero de conexi¢n de la estaci¢n.

    Ejemplo:

         ? Str( nwStation() )

See Also: "nwLogout()" 


    WinClipSize()

         Determina el tama¤o del clipboard de win 3

    Sintaxis:

         WinClipSize() -> nBytes

    Descripci¢n:

         Determina el tama¤o del clipboard de win 3 si ‚ste se encuentra
         en ejecuci¢n.

    Valor de Retorno:

         Un n£mero indicando el tama¤o del clipboard de win 3.

    Ejemplo:

         If WinOpenClip()
           ? WinClipSize()
           If ! WinCloseClip()
             ? "Error cerrando el clipboard"
           EndIf
         Else
           "Error abriendo el clipboard"
         EndIf

See Also: "WinCloseClip()" "WinOpenClip()" 


    WinCloseClip()

         Cierra el clipboard de win 3

    Sintaxis:

         WinCloseClip() -> lOk


                                 - Page 147 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Descripci¢n:

         Cierra el clipboard de win 3 si ‚ste se encuentra en ejecuci¢n.

    Valor de Retorno:

         Un valor l¢gico indicando si hay alg£n error.

    Ejemplo:

         If WinOpenClip()
           ? WinClipSize()
           If ! WinCloseClip()
             ? "Error cerrando el clipboard"
           EndIf
         Else
           "Error abriendo el clipboard"
         EndIf

See Also: "WinClipSize()" "WinOpenClip()" 


    WinDelClip()

         Borra el contenido del clipboard de win 3

    Sintaxis:

         WinDelClip() -> lOk

    Descripci¢n:

         Borra el contenido del clipboard de win 3 si est‚ se encuentra en
         ejecuci¢n.

    Valor de Retorno:

         Un valor l¢gico indicando si hay alg£n error.

    Ejemplo:

         If WinOpenClip()
           ? WinClipSize()
           If ! WinDelClip()
             ? "Error borrando el clipboard"
           EndIf
           If ! WinCloseClip()
             ? "Error cerrando el clipboard"
           EndIf
         Else
           "Error abriendo el clipboard"
         EndIf

See Also: "WinClipSize()" "WinOpenClip()" 


                                 - Page 148 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    WinGetClip()

         Devuelve el contenido del clipboard de win 3

    Sintaxis:

         WinGetClip() -> cClip

    Descripci¢n:

         Devuelve el contenido del clipboard de win 3 si ‚ste se encuentra
         en ejecuci¢n.

    Valor de Retorno:

         Un string con el contenido del clipboard de win 3.

    Ejemplo:

         If WinOpenClip()
           cBuffer := WinGetClip()
           WinCloseClip()
         EndIf

See Also: "WinClipSize()" "WinOpenClip()" 


    WinOpenClip()

         Abre el clipboard de win 3

    Sintaxis:

         WinOpenClip() -> lOk

    Descripci¢n:

         Abre el clipboard de win 3 si ‚ste se encuentra en ejecuci¢n.

    Valor de Retorno:

         Un valor l¢gico indicando si hay alg£n error.

    Ejemplo:

         If WinOpenClip()
           ? WinClipSize()
           If ! WinCloseClip()
             ? "Error cerrando el clipboard"
           EndIf
         Else
           "Error abriendo el clipboard"
         EndIf


                                 - Page 149 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


See Also: "WinClipSize()" "WinCloseClip()" 


    WinSetClip()

         Modifica el valor del clipboard de win 3

    Sintaxis:

         WinSetClip( cClip ) -> lOk

         cClip : El valor a insertar en el clipboard de win 3

    Descripci¢n:

         Modifica el contenido del clipboard de win 3 si ‚ste se encuentra
         en ejecuci¢n.

    Valor de Retorno:

         Un valor l¢gico indicando si hay alg£n error.

    Ejemplo:

         If WinOpenClip()
           WinSetClip( "Esto es un texto" )
           WinCloseClip()
         EndIf

See Also: "WinClipSize()" "WinOpenClip()" 


    WinVersion()

         Retorna la versi¢n de MS-Windows

    Sintaxis:

         WinVersion() -> cVersion

    Descripci¢n:

         Retorna la versi¢n de MS-Windows o "00.00" si Windows no est  en
         ejecuci¢n.

    Valor de Retorno:

         Un string con la versi¢n de Windows.

    Ejemplo:

         Warning( "Windows Versi¢n: " + WinVersion() )

See Also: "IsWin3()" 


                                 - Page 150 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'

























































                                 - Page 151 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 1, MetaFunctions




    Intentar documentar todo esto ser¡a imposible. Mejor m¡relo y busque
 lo que necesita.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    AsciiTab()

         Muestra una tabla ASCII

    Sintaxis:

         AsciiTab( [nRow], [nCol], [nStart], [cColor] ) -> cChar | NIL

         nRow   : L¡nea de la tabla. Por defecto 5.
         nCol   : Columna de la tabla. Por defecto 5.
         nStart : Car cter ascii inicial. Por defecto 0.
         cColor : El color de fondo. Por defecto "B"

    Descripci¢n:

         Muestra una tabla ascii en la posici¢n especificada y retorna el
         valor ASCII seleccionado.
         El color del car cter seleccionado ser  fondo intenso o parpadeo
         dependiendo del valor de la funci¢n standard de CA-Clipper SetBlink().

    Valor de Retorno:

         NIL se el usuario puls¢ ESC o el valor ASCII seleccionado si puls¢
         RETURN.

    Ejemplo:

         cValue := AsciiTab( 10, 10, 1, "B" )

See Also: "AsciiTabPro()" 


    AsciiTabPro()

         Muestra una tabla ASCII ideal para programadores

    Sintaxis:

         AsciiTabPro( [nRow], [nCol], [nStart], [cColor] ) -> cChar | NIL

         nRow   : L¡nea de la tabla. Por defecto 2.
         nCol   : Columna de la tabla. Por defecto 12.
         nStart : Car cter ascii inicial. Por defecto 0.
         cColor : El color de fondo. Por defecto "B"

                                 - Page 152 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Descripci¢n:

         Muestra una tabla ascii en la posici¢n especificada y retorna el
         valor ASCII seleccionado. Esta funci¢n es ideal para programadores.
         El color del car cter seleccionado ser  fondo intenso o parpadeo
         dependiendo del valor de la funci¢n standard de CA-Clipper SetBlink().

    Valor de Retorno:

         NIL se el usuario puls¢ ESC o el valor ASCII seleccionado si puls¢
         RETURN.

    Ejemplo:

         cValue := AsciiTabPro( 10, 10, 1, "B" )

See Also: "AsciiTab()" 


    Backup()

         Realiza un backup

    Sintaxis:

         Backup( [dDate], [cTime], [cUser], [cUnit], aDir, [lRec], ;
                 [cColor], [bBlock] ) -> lError

         dDate     : La fecha de backup
         cTime     : La hora de backup
         cUser     : El usuario que realiza el backup. 127 caracteres m ximo.
         cUnit     : La unidad de backup
         aDir      : Array bidimensional con los directorios a salvar.
         lRec      : Un valor l¢gico que determina si los subdirectorios que
                     dependen de los indicados tambi‚n deben incluirse.
         cColor    : El color de la ventana de estad¡sticas.
         bBlock    : Un codeblock a evaluar antes de cambiar a nuevo disco.

    Descripci¢n:

         Realiza un backup de los directorios especificados.

         WARNING
         Esta funci¢n realiza un dbCloseAll(), asi pu‚s, las bases de datos
         activas ser n cerradas.

    Valor de Retorno:

         Un valor l¢gico indicando si se ha producido alg£n error.

    Ejemplo:

         If Backup ( Date (), Time (), "FAST.lib", "A:\", ;
                     { { "C:\DOS\",      "*.*"   }, ;

                                 - Page 153 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


                       { "C:\OS2\MDOS\", "*.COM" } }, ;
                    .T., "N/W,N/W", ;
                    { || NewDisk() } )
           BoxWarning ( "Backup ok" )
         Else
           BoxWarning ( "Errores detectados" )
         EndIf

         Function NewDisk ()
             Format ( 0, 4, .F. )    // Da formato 3« HD en A:
         Return ( .T. )              // Debe retornar .T.
                                     // Si retorna .F. cancela el backup

See Also: "Restore()" 


    BigClock()

         Muestra un reloj digital con n£meros gigantes

    Sintaxis:

         BigClock( [nRow], [nCol] ) -> NIL

         nRow   : L¡nea del reloj
         nCol   : Columna del reloj

    Descripci¢n:

         Esta funci¢n muestra un reloj digital con n£meros gigantes y espera
         a que se pulse una tecla restaurando la pantalla.

    Valor de Retorno:

         Nada.

    Ejemplo:

         BigClock( 10, 20 )

See Also: "Clock()" 


    Calculator()

         Muestra una calculadora

    Sintaxis:

         Calculator( [cColor], [cColorNum], [ColorMem] ) -> nResult

         cColor    : El color de la caja
         cColorNum : El color de los n£meros
         cColorMem : El color del indicador de memoria


                                 - Page 154 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Descripci¢n:

         Muestra una calculadora con los colores seleccionados

    Valor de Retorno:

         El resultado del c lculo si se pulsa F10 o NIL si se pulsa Esc.

    Ejemplo:

         nRes := Calculator ( "N/W", "G+/N", "R+/N" )


    Calendar()

         Muestra un calendario

    Sintaxis:

         Calendar( [nY], [nX], [cColor], [cSunday], [cColorHigh] ) -> dDate

         nY         : L¡nea
         nX         : Columna
         cColor     : El color del calendario
         cSunday    : El color de los d¡as festivos
         cColorHigh : El color del d¡a seleccionado

    Descripci¢n:

         Muestra un calendario en la posici¢n y color dados.

    Valor de Retorno:

         Selecciona una fecha si se pulsa <Ù o NIL si se pulsa Esc.

    Ejemplo:

         dDate := Calendar ( 5, 20, "N/BG", "R/BG", "GR+/B" )


    ChkDsk()

         Comprueba el formato de un disquete

    Sintaxis:

         ChkDsk ( nDisk ) -> nFormat

         nDisk : Unidad a comprobar. A: -> 0, B: -> 1.

    Descripci¢n:

         Comprueba el formato de un disquete un devuelve un valor num‚rico.

    Valor de Retorno:

                                 - Page 155 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         -2 Par metros err¢neos
         -1 Error durante la comprobaci¢n
          0 Formato desconocido
          1 360 kb   5¬ DD
          2 720 kb   3« DD
          3 1.2 mb   5¬ HD
          4 1.44 mb  3« HD

    Ejemplo:

         nFormat := ChkDsk ( 0 )
         If nFormat > 0
           Format ( 0, nFormat, .T. )
         Else
           Warning ( "Unknown format" )
         EndIf

See Also: "Format()" 


    ChooseColor()

         Permite seleccionar un color

    Sintaxis:

         ChooseColor( [nRow], [nCol], [lShowColor] ) -> NIL

         nRow       : La l¡nea de la ventana. Por defecto es 3.
         nCol       : La columna de la ventana. Por defecto es 28.
         lShowColor : Un valor l¢gico indicando si el color debe ser mostrado
                      en formato string durante la selecci¢n. Por defecto .F.

    Descripci¢n:

         Permite al usuario elegir un color.

    Valor de Retorno:

         El color en formato string o NIL si se pulsa Esc.

    Ejemplo:

         ? "El color seleccionado es " + ChooseColor( 3, 28, .T. )


    Chrono()

         Cambia/Devuelve el valor de 3 cronos programables

    Sintaxis:

         Chrono( nChrono [, lLoad] ) -> nTime


                                 - Page 156 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         nChrono : El n£mero del crono ( 1 2 3 )
         lLoad   : Un valor l¢gico indicando si se quiere cargar el crono
                   con la hora actual. Por defecto es .F.

    Descripci¢n:

         Cabia/Devuelve el valor de 3 cronos programables. Los cronos pueden
         ser programados por separado.

    Valor de Retorno:

         El intervalo entre la hora actual y la hora en la que el crono fue
         programado.

    Ejemplo:

         Chrono( 1, .T. )       // El crono 1 se carga con la hora actual
         Delay( 10 )            // Delay, 10 segundos
         ? Chrono( 1 )          // 10


    Clock()

         Des/Instala un reloj residente

    Sintaxis:

         Clock( [lActive], [nPosY], [nPosX], [cColor] ) -> lIsActive

         lActive : Un valor l¢gico indicando si se desea activar (.T.) o
                   desactivar (.F.) el reloj.
                   Si el par metro es NIL, Clock() retorna el modo actual.
         nPosY   : La l¡nea del reloj. Por defecto es 0.
         nPosX   : La columna del reloj. Por defecto es 70.
         cColor  : El color del reloj. Por defecto es "GR+/B"

    Descripci¢n:

         Muestra un reloj sin la acci¢n del programador.

    Valor de Retorno:

         El modo actual del reloj. .T. activo y .F. inactivo.

    Ejemplo:

         Clock( .T., 0, 1, "W/B" )  // instala el reloj en la l¡nea 0,
                                    // columna 1 y color "W/B"
         Inkey( 0 )
         Clock( .F. )

See Also: "BigClock()" 


    DirTree()

                                 - Page 157 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Crea un array con la estructura de un disco

    Sintaxis:

         DirTree( cMask, cDir ) -> aArray

         cMask : La m scara de ficheros a buscar
         cDir  : El directorio de comienzo

    Descripci¢n:

         Retorna un array con los directorios especificados ordenados de
         padre a hijo.

    Valor de Retorno:

         Un array con directorios.

    Ejemplo:

         Window ( 4, 0, 22, 29, "Directory C:\", "ÉÍ»º¼ÍÈº ", .T. )
         aChoice ( 5, 2, 21, 27, DirTree ( "\*.*", "C:\" ), .T. )


    Editor()

         Edita un fichero de texto

    Sintaxis:

         Editor ( [cFile], [cColor] ) -> NIL

         cFile  : Fichero a editar.
         cColor : El color del editor.

    Descripci¢n:

         Ejecuta un editor ascii con ficheros no superiores a 64 kb.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Editor ( "Fast.Ini", "W/B" )

See Also: "Notes()" 


    FastMemo()

         Edita un campo memo


                                 - Page 158 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Sintaxis:

         FastMemo( nY1, nX1, nY2, nX2, cMemo, [cTitle], [cColBro], ;
                   [lShadow], [lWrite] ) -> cNewMemo

         nY1     : Coordenada Y superior izquierda
         nX1     : Coordenada X superior izquierda
         nY2     : Coordenada Y inferior derecha
         nX2     : Coordenada X inferior derecha
         cMemo   : El memo a editar
         ctitle  : El t¡tulo de la ventana de edici¢n
         cColBro : El color de la ventana
         lShadow : Un valor l¢gico que indica si se desea ventana con sombra
         lWrite  : Un valor l¢gico que indica si el memo es de solo lectura

    Descripci¢n:

         Edita un campo memo de Clipper.

    Valor de Retorno:

         Un nuevo campo memo.

    Ejemplo:

         Local cMemo := "Hola"
         ? FastMemo( 10, 10, 20, 55, cMemo, "MemoTest", "GR+/B", .T., .T. )


    FontEdit()

         Edita la fuente de caracteres

    Sintaxis:

         FontEdit( [ cFile ] ) -> NIL

         cFile : El fichero con la fuente de caracteres

    Descripci¢n:

         Edita la fuente de caracteres desde Clipper.

    Valor de Retorno:

         Nada.

    Ejemplo:

         FontEdit( "cubo.fon" )


    Format()

         Da formato a un disquete

                                 - Page 159 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Sintaxis:

         Format ( nDisk, nFormat, lQuick ) -> nError

         nDisk   : La unidad para dar formato. A:=0, B:=1.
         nFormat : Formato. 360=1, 720=2, 1.2=3, 1.44=4
         lQuick  : Un valor l¢gico indicando si se desea un QuickFormat o no.

    Descripci¢n:

         Da formato a un disquete seg£n el formato especificado.

    Valor de Retorno:

         -2 Par metros err¢neos
         -1 Error en el formato
          0 Ok

    Ejemplo:

         nFormat := ChkDsk ( 0 )
         If nFormat > 0
           Format ( 0, nFormat, .T. )
         Else
           Warning ( "Formato desconocido" )
         EndIf

See Also: "ChkDsk()" 


    GaugeNew()

         Crea e inicializa una barra de estado

    Sintaxis:

         GaugeNew( nRow, cMessage, cColor ) -> aBar

         nRow     : La l¡nea de la barra
         cMessage : El mensaje a mostrar
         cColor   : El color de la ventana

    Descripci¢n:

         Crea e inicializa una barra de estado retornando un array con la
         informaci¢n de la barra para GaugeUpdate().

    Valor de Retorno:

         Un array con la informaci¢n de la barra.

    Ejemplo:

         aGauge := GaugeNew( 9, "Fast Library Installation progress", "G" )

                                 - Page 160 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



See Also: "GaugeUpdate()" 


    GaugeUpdate()

         Incrementa un barra de estado

    Sintaxis:

         GaugeUpdate( aBar, nInc ) -> NIL

         aBar : Un array con la informaci¢n de la barra de estado
         nInc : El incremento. El rango total de la barra es 0-1

    Descripci¢n:

         Incrementa una barra de estado que ha sido creada con GaugeNew().

    Valor de Retorno:

         Nada.

    Ejemplo:

         aGauge := GaugeNew( 9, "Fast Library Installation", "G" )
         GaugeUpdate( aGauge, 0.5 )
         GaugeUpdate( aGauge, 0.5 )

See Also: "GaugeNew()" 


    InspectDBF()

         Inspecciona las workareas activas

    Sintaxis:

         InspectDBF() -> NIL

    Descripci¢n:

         Esta funci¢n inspecciona las workareas activas dando informaci¢n
         sobre ellas.

    Valor de Retorno:

         Nada.

    Ejemplo:

         InspectDBF()

See Also: "InspectOBJ()" "InspectSETS()" 


                                 - Page 161 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    InspectOBJ()

         Inspecciona un array u objeto

    Sintaxis:

         InspectOBJ( cVarName, xVar ) -> NIL

         cVarName : El t¡tulo de la ventana del inspector de objetos
         xVar     : La variable a inspeccionar

    Descripci¢n:

         Esta funci¢n inspecciona un array u objeto y permite cambiarlo.

    Valor de Retorno:

         Nada.

    Ejemplo:

         aArray := { "Hello", 12, { "First", "Second" }, { || NIL } }
         InspectOBJ( "aArray", aArray )

See Also: "InspectDBF()" "InspectSETS()" 


    InspectSETS()

         Inspecciona el valor de los SETS

    Sintaxis:

         InspectSETS() -> NIL

    Descripci¢n:

         Esta funci¢n inspecciona el valor de los SETS de Clipper
         permitiendo cambiarlos.

    Valor de Retorno:

         Nada.

    Ejemplo:

         InspectSETS()

See Also: "InspectDBF()" "InspectOBJ()" 


    IsFastGT()

         Determina si FAST.GT est  lincado

                                 - Page 162 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Sintaxis:

         IsFastGT() -> lLinked

    Descripci¢n:

         Determina si FAST.GT est  lincado.
         FAST.GT es un software que permite a los programas Clipper
         ejecutarse en modo gr fico sin ning£n cambio adicional en el
         c¢digo.

    Valor de Retorno:

         Un valor l¢gico.

    Ejemplo:

         If IsFastGT()
           ? "Oh!!! est mos en modo gr fico"
         EndIf


    IsPirate()

         Determina si el programa es una copia pirata

    Sintaxis:

         IsPirate() -> lIsPirate

    Descripci¢n:

         Esta funci¢n determina si el programa en ejecuci¢n es una copia
         pirata. La primera vez que se ejecuta el programa, ‚ste se
         automarcar . De esta forma, podr  comprobar esta marca en
         siguientes ejecuciones.
         Si este programa, ya automarcado, se ejecuta en otro sistema
         IsPirate() devolver  .T. Si todo est  correcto devuelve .F.

    Valor de Retorno:

         Un l¢gico indicando si el programa en ejecuci¢n es una copia
         pirata.

    Ejemplo:

         If IsPirate()
           ? "Don't forget to register"
           Quit
         EndIf


    IsSound()


                                 - Page 163 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Determina si los sonidos del speaker est n permitidos

    Sintaxis:

         IsSound( [lMode] ) -> lOldMode

         lMode : Un l¢gico para indicar el nuevo modo

    Descripci¢n:

         Esta funci¢n determina si los sonidos del speaker est n permitidos
         cuando un funci¢n de Fast Library est  en ejecuci¢n.

    Valor de Retorno:

         El modo actual.

    Ejemplo:

         lSound := IsSound( .F. )
         Serpent()                      // Sin sonido
         IsSound( lSound )


    Manager()

         Un peque¤o PCTools en Clipper

    Sintaxis:

         Manager ( [cColor], [cColorHigh] ) -> NIL

         cColor     : El color del File Manager.
         cColorHigh : El color de los botones de las cajas de di logo.

    Descripci¢n:

         Ejecuta un peque¤o File Manager al estilo PCTools.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Manager ( "N/W,N/BG", "N/BG" )


    MiniDebug()

         Evalua una expresi¢n Clipper

    Sintaxis:

         MiniDebug( nY, cExpr ) -> NIL

                                 - Page 164 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         nY    : La l¡nea del debugger
         cExpr : La expresi¢n inicial

    Descripci¢n:

         Evalua una expresi¢n xBASE/Clipper.

    Valor de Retorno:

         Nada.

    Ejemplo:

         MiniDebug( 7, "Replicate( 'Fast ', 2 )" )


    MsgScroll()

         Muestra un mensaje con scroll horizontal

    Sintaxis:

         MsgScroll( nRow, nCol, nSize, cString, cColor ) -> NIL

         nRow    : La l¡nea del mensaje
         nCol    : La columna izquierda del mensaje
         nSize   : El tama¤o horizontal
         cString : El mensaje a mostrar
         cColor  : El color del mensaje

    Descripci¢n:

         Muestra un mensaje con scroll horizontal hasta que se pulse una
         tecla.

    Valor de Retorno:

         Nada.

    Ejemplo:

         MsgScroll( 10, 12, 20, "Pulse una tecla para continuar", "GR+/B" )


    Notes()

         Hace c lculos al estilo Lotus123

    Sintaxis:

         Notes ( [cColor], [cColorBrowse], [cFile] ) -> NIL

         cColor       : El color de la hoja de c lculo
         cColorBrowse : El template de colores para el browse

                                 - Page 165 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         cFile        : El fichero HC con la hoja de c lculo

    Descripci¢n:

         Con esta funci¢n puede acceder a una hoja de c lculo.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Notes( "W/B,N/BG", "W/B,N/BG,G/B,W/B,R+/B", "ejemplo1.hc" )

See Also: "Editor()" 


    RealStars()

         Muestra un campo de estrellas

    Sintaxis:

         RealStars( nSpeed ) -> NIL

         nSpeed : La velocidad de las estrellas. Rango 1-10. Por defecto 3.

    Descripci¢n:

         Apaga la pantalla y muestra un cielo de estrellas de diferentes
         colores y tama¤os. Espera hasta que se pulsa una tecla y restaura
         el estado del ordenador.

    Valor de Retorno:

         Nada.

    Ejemplo:

         RealStars()

See Also: "Stars()" "ScreenSaver()" 


    Restore()

         Restaura un backup

    Sintaxis:

         Restore( [cUnit], aDirec, cColor ) -> lExit

         cUnit  : La unidad de backup
         aDirec : El array de directorios a restaurar
         cColor : El color de la ventana de estad¡sticas

                                 - Page 166 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Descripci¢n:

         Restaura desde la unidad cUnit todos los ficheros cuyos nombres
         coincidad con los elementos del array de directorios.

         ­­AVISO!!
         Esta funci¢n realiza un dbCloseAll()

    Valor de Retorno:

         Un valor l¢gico indicando el resultado.

    Ejemplo:

         Restore ( "A:\", { "C:\DOS" }, "N/W,N/W" )

See Also: "Backup()" 


    ScreenSaver()

         Muestra un screen saver

    Sintaxis:

         ScreenSaver( cColor [, cMessage] ) -> NIL

         cColor   : El color del mensaje
         cMessage : El mensaje a mostrar

    Descripci¢n:

         Su monitor se lo agradecer  eternamente.

    Valor de Retorno:

         Nada.

    Ejemplo:

         ScreenSaver( "BG+/N", "Fast Library For Clipper ScreenSaver" )

See Also: "Stars()" 


    Stars()

         Muestra un screen saver

    Sintaxis:

         Stars() -> NIL

    Descripci¢n:

                                 - Page 167 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Apaga la pantalla y muestra un cielo de estrellas de diferentes
         colores y tama¤os. Espera hasta que se pulsa una tecla y restaura
         el estado del ordenador.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Stars ()

See Also: "RealStars()" "ScreenSaver()" 


    VirCheck()

         Comprueba la memoria buscando m s de 100 virus conocidos

    Sintaxis:

         VirCheck() -> aVirus

    Descripci¢n:

         Comprueba la memoria en busca de m s de 100 virus conocidos.
         La lista de virus que detecta VirCheck es la siguiente

              shake                          invader
              mg                             669 / thirteen minutes
              1063 / mono                    plastique / anticad
              jabberwocky                    horse-2
              murphy-2                       patricia / smack
              plastique2576 / anticad 2576   horse
              sparse                         murphy-1 / murphy-4
              shirley                        zherkov-1882
              1876 / dash-em                 nomenklatura
              948 / screenplus1              magnitogorsk
              lozinsky / zherkov             hitchcock
              dark avenger-1028              1193 / copyright
              ussr-707                       justice
              europe-92                      cascade
              516 / leapfrog                 1067 / headcrash
              rape-747                       klaeren / hate
              growing block                  squeaker
              SVC                            SVC 5.0 or SVC 6.0
              vriest                         carioca
              789 / filehider                eddie-2
              blinker                        backtime
              600 or voronezh family         hey you
              datalock                       ussr-1049
              slow / zerotime                solano
              905 / backfont                 sverdlov
              socha                          yankee or mlti

                                 - Page 168 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


              mh-757                         milous
              vitcode                        westwood
              fellowship                     diamond-a
              diamond-b                      dir
              gotcha                         plovdiv 1.3
              durban                         brothers
              jerusalem family               armagedon
              8-tunes                        mendoza
              fu manchu                      anarkia
              spyer / kiev                   terror
              jerusalem-g                    pregnant
              frere jacques                  tremor
              pcvrsds                        carfield
              gp1                            cinderella
              dbase                          troi
              border                         483
              flip                           2468 / tequila
              black monday                   sunday
              tumen 0.5 / hero               twins
              08/15 / many fingers           ontario
              year 1992 / b1m92              revenge

         VirCheck() solo comprueba la memoria, nunca los discos o ficheros.

    Valor de Retorno:

         Un array con un elemento por cada virus comprobado que contiene .F.
         si el virus comprobado no est  en memoria o .T. si est  activo en
         memoria.

    Ejemplo:

         FUNCTION Demo()
         LOCAL lVirus := .F.
         LOCAL aArray
         LOCAL nInd
         LOCAL aName  := { ;
              "shake",                          "invader", ;
              "mg",                             "669 / thirteen minutes", ;
              "1063 / mono",                    "plastique / anticad", ;
              "jabberwocky",                    "horse-2", ;
              "murphy-2",                       "patricia / smack", ;
              "plastique2576 / anticad 2576",   "horse", ;
              "sparse",                         "murphy-1 / murphy-4", ;
              "shirley",                        "zherkov-1882", ;
              "1876 / dash-em",                 "nomenklatura", ;
              "948 / screenplus1",              "magnitogorsk", ;
              "lozinsky / zherkov",             "hitchcock", ;
              "dark avenger-1028",              "1193 / copyright", ;
              "ussr-707",                       "justice", ;
              "europe-92",                      "cascade", ;
              "516 / leapfrog",                 "1067 / headcrash", ;
              "rape-747",                       "klaeren / hate", ;
              "growing block",                  "squeaker", ;
              "SVC",                            "SVC 5.0 or SVC 6.0", ;

                                 - Page 169 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


              "vriest",                         "carioca", ;
              "789 / filehider",                "eddie-2", ;
              "blinker",                        "backtime", ;
              "600 or voronezh family",         "hey you", ;
              "datalock",                       "ussr-1049", ;
              "slow / zerotime",                "solano", ;
              "905 / backfont",                 "sverdlov", ;
              "socha",                          "yankee or mlti", ;
              "mh-757",                         "milous", ;
              "vitcode",                        "westwood", ;
              "fellowship",                     "diamond-a", ;
              "diamond-b",                      "dir", ;
              "gotcha",                         "plovdiv 1.3", ;
              "durban",                         "brothers", ;
              "jerusalem family",               "armagedon", ;
              "8-tunes",                        "mendoza", ;
              "fu manchu",                      "anarkia", ;
              "spyer / kiev",                   "terror", ;
              "jerusalem-g",                    "pregnant", ;
              "frere jacques",                  "tremor", ;
              "pcvrsds",                        "carfield", ;
              "gp1",                            "cinderella", ;
              "dbase",                          "troi", ;
              "border",                         "483", ;
              "flip",                           "2468 / tequila", ;
              "black monday",                   "sunday", ;
              "tumen 0.5 / hero",               "twins", ;
              "08/15 / many fingers",           "ontario", ;
              "year 1992 / b1m92",              "revenge" ;
              }

         ? "Bienvenido a la demo de FAST.lib SCAN-VIR TOOL"
         ? "FAST.lib detecta m s de 100 virus como jerusalem, flip, dbase..."
         ?
         ? "Pulse una tecla para continuar..."
         Inkey( 0 )

         ? "Comprobando memoria en busca de virus..."
         aArray := VirCheck()

         ?
         ? "Comprobando resultados de la b£squeda..."
         aEval( aArray, { | lX | IIF( lX, lVirus := .T., ) } )

         ?
         IF lVirus
           ? "PELIGRO!!! Se han encontrado virus"
           FOR nInd := 1 TO LEN( aArray )
             IF aArray[ nInd ]
               ? "Virus " + aName[ nInd ] + " detectado en memoria"
               Tone( 500, 10 )
             ENDIF
           NEXT
         ELSE
           ? "No se han encontrado virus"

                                 - Page 170 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         ENDIF
         ?
         RETURN NIL




















































                                 - Page 171 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 2, Menues




    Con estas funciones podr  crear menues pop-up event-driven de una forma
 muy sencilla. Su uso es muy sencillo.

    Todo el sistema de menues est  basado en arrays; de esta forma, puede
 a¤adir o borrar items o l¡neas en cada men£. Cuando a¤ade un item, este es
 inicializado como seleccionable. Despu‚s, el atributo de selecci¢n puede ser
 modificado. Cuando se a¤ade una l¡nea, ‚sta es automaticamente inicializada
 como no seleccionable.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    AddItem()

         A¤ade un item seleccionable a un submen£

    Sintaxis:

         AddItem( aMenu, nSubMenu, cItem, [cMess], [nPos], [aSub] ) -> NIL

         aMenu    : El men£ creado con NewMenu()
         nSubMenu : El n£mero de submen£ al que a¤adir el item
         cItem    : El item a a¤adir al submen£
         cMess    : El mensaje a mostrar cuando se selecciona el item
         nPos     : La posici¢n del item dentro del submen£;
                    £ltima posici¢n por defecto
         aSub     : Un array con las opciones de submen£

    Descripci¢n:

         A¤ade un item a un submen£, activando el item como seleccionable.

    Valor de Retorno:

         NIL.

    Ejemplo:

         aMenu := NewMenu( { "^Sistema", "^Herramientas", "^Otros" }, ;
                           { "N/W", "R/W", "W/B",  "W+/B", ;
                             "N/W", "W/B", "N+/W", "R/W", "GR+/B" } )
         AddItem ( aMenu, 1, "Item ^1", "Mensaje", , { "Sub1", "Sub2" } )

See Also: "AddLine()" "DelItem()" 


    AddLine()

          A¤ade un l¡nea a un submen£ como item no seleccionable


                                 - Page 172 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Sintaxis:

         AddLine( aMenu, nSubMenu [, nPos] ) -> NIL

         aMenu    : El men£ creado con NewMenu()
         nSubMenu : El n£mero de submen£ al que a¤adir la l¡nea
         nPos     : La posici¢n de la l¡nea en el submen£;
                    £ltima posici¢n por defecto

    Descripci¢n:

         A¤ade un l¡nea a un submenu, activ ndolo como no seleccionable.

    Valor de Retorno:

         NIL.

    Ejemplo:

         aMenu := NewMenu( { "^Sistema", "^Herramientas", "^Otros" }, ;
                           { "N/W", "R/W", "W/B",  "W+/B", ;
                             "N/W", "W/B", "N+/W", "R/W", "GR+/B" } )
         AddItem ( aMenu, 1, "Item ^1", "Mensaje 1" )
         AddItem ( aMenu, 1, "Item ^2", "Mensaje 2" )

         AddLine ( aMenu, 1, 2 )  // A¤ade un l¡nea entre los 2 items.

See Also: "AddItem()" "DelItem()" 


    DelLine()

         Borra un item de un submen£

    Sintaxis:

         DelLine( aMenu, nSubMenu, nPos ) -> NIL

         aMenu    : El men£ creado con NewMenu()
         nSubMenu : El n£mero del submen£ del que borrar el item
         nPos     : La posici¢n del item dentro del submen£

    Descripci¢n:

         Borra un item o una l¡nea de un submen£ y reconfigura el submen£.

    Valor de Retorno:

         NIL.

    Ejemplo:

         aMenu := NewMenu( { "^Sistema", "^Herramientas", "^Otros" }, ;
                           { "N/W", "R/W", "W/B",  "W+/B", ;
                             "N/W", "W/B", "N+/W", "R/W", "GR+/B" } )

                                 - Page 173 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         AddItem ( aMenu, 1, "Item ^1", "Mensaje 1" )
         AddItem ( aMenu, 1, "Item ^2", "Mensaje 2" )

         DelLine ( aMenu, 1, 2 )  // Borra el segundo item

See Also: "AddItem()" "AddLine()" 


DispMenu()

         Activa un men£ que ha sido previamente creado

    Sintaxis:

         DispMenu( aMenu [, nInit] ) -> nOption

         aMenu : Un array definiendo la estructura del men£ que fue creado
                 previamente con NewMenu().
         nInit : Un n£mero opcional que indica el submen£ por defecto al
                 mostrar el men£.

    Descripci¢n:

         Activa un men£ y procesa todas las teclas de navegaci¢n retornando
         un valor calculado como:

            nOption := ;
               ( Menu_Num * 10000 ) + ( Opt_Num * 100 ) + SubMenu Option

         Note que puede crear m£ltiples menues y despu‚s activar el necesario.
         Esto puede ser muy £til para mantener menues en varios idiomas.

         El mensaje asociado a cada item ser  mostrado en la l¡nea de
         pantalla especificado por SET MESSAGE TO <nRow>.

    Valor de Retorno:

         Un n£mero indicando la opci¢n seleccionada o 0 si se pulsa ESC.

    Ejemplo:

         aMenu := NewMenu( { "^Sistema", "^Herramientas", "^Otros" }, ;
                           { "N/W", "R/W", "W/B",  "W+/B", ;
                             "N/W", "W/B", "N+/W", "R/W", "GR+/B" } )

         AddItem ( aMenu, 1, "Item ^1-1", "Mensaje" )
         AddItem ( aMenu, 1, "Item ^2-1", "Mensaje" )
         AddItem ( aMenu, 2, "Item ^1-2", "Mensaje" )
         AddItem ( aMenu, 2, "Item ^2-2", "Mensaje" )
         AddItem ( aMenu, 3, "Item ^1-3", "Mensaje" )

         nOpt := DispMenu ( aMenu, 3 )

         DO CASE
           CASE nOpt == 10100             // Menu 1, opci¢n 1

                                 - Page 174 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


             ...
           CASE nOpt == 10200             // Menu 1, opci¢n 2
             ...
         ENDCASE

See Also: "NewMenu()" 


    OffItem()

         Desactiva un item de un submen£

    Sintaxis:

         OffItem( aMenu, nSubMenu, nPos ) -> NIL

         aMenu    : El men£ creado con NewMenu()
         nSubMenu : El n£mero del submen£ en el que desactivar el item
         nPos     : La posici¢n del item dentro del submen£

    Descripci¢n:

         Desactiva un item; el item seguir  estando visible pero no podr 
         ser seleccionado.

    Valor de Retorno:

         NIL.

    Ejemplo:

         aMenu := NewMenu( { "^Sistema", "^Herramientas", "^Otros" }, ;
                           { "N/W", "R/W", "W/B",  "W+/B", ;
                             "N/W", "W/B", "N+/W", "R/W", "GR+/B" } )
         AddItem ( aMenu, 1, "Item ^1", "Mensaje 1" )
         AddItem ( aMenu, 1, "Item ^2", "Mensaje 2" )

         OffItem ( aMenu, 1, 2 )  // Desactiva el segundo item.

See Also: "OnItem()" 


    OnItem()

         Reactiva un item de un submen£

    Sintaxis:

         OnItem( aMenu, nSubMenu, nPos ) -> NIL

         aMenu    : El men£ creado con NewMenu()
         nSubMenu : El n£mero del submen£ en el que reactivar el item
         nPos     : La posici¢n del item dentro del submen£

    Descripci¢n:

                                 - Page 175 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Reactiva un item de un men£, haciendolo seleccionable de nuevo.
         Una l¡nea no puede ser hecha seleccionable.
         Solo un item previamente desactivado puede reactivarse.

    Valor de Retorno:

         NIL.

    Ejemplo:

         aMenu := NewMenu( { "^Sistema", "^Herramientas", "^Otros" }, ;
                           { "N/W", "R/W", "W/B",  "W+/B", ;
                             "N/W", "W/B", "N+/W", "R/W", "GR+/B" } )
         AddItem ( aMenu, 1, "Item ^1", "Mensaje 1" )
         AddItem ( aMenu, 1, "Item ^2", "Mensaje 2" )

         OffItem ( aMenu, 1, 2 )  // Desactiva el segundo item
         OnItem ( aMenu, 1, 2 )   // Ahora lo reactiva

See Also: "OffItem()" 


    NewMenu()

          Crea una estructura de men£

    Sintaxis:

         NewMenu( aOptions, aColors, lShadow ) -> aMenu

         aOptions : Un array con la siguiente estructura:

                       { cOpci¢n1, cOpci¢n2, ..., cOpci¢nN }

                    Cada opci¢n puede incluir el s¡mbolo "^" para indicar
                    que el caracter que precede ser  una hotkey que podr 
                    ser seleccionado con ALT y la tecla especificada.

         aColors  : Un array de 9 elementos especificando los colores:

                     - opciones no seleccionables
                     - Caracter especial de las opciones no seleccionables
                     - Opci¢n seleccionada
                     - Caracter especial de la opci¢n seleccionada
                     - Items de los submenues
                     - Item seleccionado de los submenues
                     - Items no seleccionables de los submenues
                     - Caracter especial del los items no seleccionables
                     - Caracter especial del item seleccionado

         lShadow  : Un valor l¢gico indicando si se desea sombras en los
                    submenues. Por defecto .F.

    Descripci¢n:

                                 - Page 176 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Crea un array definiendo la estructura de un men£ y los colores
         con los que ser  mostrado.

    Valor de Retorno:

         Un array definiendo la estructura y los colores del nuevo men£.

    Ejemplo:

         aMenu := NewMenu( { "^Sistema", "^Herramientas", "^Otros" }, ;
                           { "N/W", "R/W", "W/B",  "W+/B", ;
                             "N/W", "W/B", "N+/W", "R/W", "GR+/B" }, ;
                           .T. )

See Also: "DispMenu()" 


    READ

          @ SAY..GET con radio botones

    Sintaxis:

         @ nRow, nCol [ SAY cSayText ]
                GET cGetVar
                [ WHEN lPrevalid ]
                [ VALID lPostValid ]
                [ COLOR cColor ]
                WITH RADIOBUTTONS aOptions
                [ NOBOX ]
                [ DOUBLE ]
                [ HORIZONTAL ]


    Descripci¢n:

         Ahora puede crear atractivos radio botones que cumplen con las
         especificaciones CUA usando un variante adicional del comando
         @ SAY..GET y el comando standard READ.
         El nueva cla£sula @ SAY..GET WITH RADIOBUTTONS especifica un
         array que contiene las caracter¡sticas del radio bot¢n. Si NOBOX es
         especificado, el radio bot¢n ser  mostrado sin caja. Si NOBOX es
         omitido el radio bot¢n ser  mostrado con una caja de l¡neas
         simples o dobles dependiendo de que DOUBLE sea o no especificado.
         El radio bot¢n ser  orientado horizontalmente si HORIZONTAL es
         especificado; caso contrario se orientar  verticalmente.

    Valor de Retorno:

         No aplicable.

    Ejemplo:

         @ 4,5  SAY "Get Normal 1:" GET cGet1

                                 - Page 177 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         @ 6,5  SAY "Clipper Lib"   GET nChoice1 ;
                COLOR "R/B" ;
                WITH RADIOBUTTONS { "1 Opc", "2 No buttons", "3 Opc" }
         @ 6,40 SAY "Fast Library"  GET nChoice2 WHEN nChoice1 != 2 ;
                COLOR "W/N" ;
                WITH RADIOBUTTONS { "1 Adios", "2 Agur", "3 Bye bye" }
         @ 7,60 GET nChoice3 ;
                COLOR "GR+/B" ;
                WITH RADIOBUTTONS { "1 Quick", "3 Simple", "4 Beautiful" } ;
                NOBOX
         @ 12,5 SAY "Get Normal 2:" GET cGet2
         @ 17,5 SAY "Buttons 4:"    GET nChoice4 ;
                COLOR "R+/W" ;
                WITH RADIOBUTTONS { "1 Option", "2 Option", "3 Option" } ;
                DOUBLE ;
                HORIZONTAL
         READ






































                                 - Page 178 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 2, Rat¢n




    Esta secci¢n de la biblioteca dara un completo acceso al rat¢n en sus
  aplicaciones Clipper.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    rButtons()

         Retorna el n£mero de botones

    Sintaxis:

         rButtons() -> nButtons

    Descripci¢n:

         Retorna 2 si el rat¢n es un Microsoft mouse o 3 si es un
         Mouse Systems/Logitech mouse.

    Valor de Retorno:

         Un n£mero indicando el n£mero de botones.

    Ejemplo:

         ? rButtons ()


    rCentre()

         Determina si el bot¢n central est  pulsado

    Sintaxis:

         rCentre() -> lPress

    Descripci¢n:

         Determina si el bot¢n central est  pulsado retornando un valor
         l¢gico.

    Valor de Retorno:

         Un l¢gico indicando si est  pulsado o no.

    Ejemplo:

         If rCentre()
           Warning ( "Central button pulsado" )
         EndIf

                                 - Page 179 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



See Also: "rLeft()" "rRight()" 


    rCursorOff()

         Desactiva la visualizaci¢n del cursor de rat¢n

    Sintaxis:

         rCursorOff() -> NIL

    Descripci¢n:

         Esconde el cursor de rat¢n. M£ltiples llamadas a esta funci¢n
         requeriran m£ltiples llamadas a rCursorOn() para mostrarlo de
         nuevo.

    Valor de Retorno:

         Nada.

    Ejemplo:

         rCursorOff()

See Also: "rCursorOn()" 


    rCursorOn()

         Activa la visualizaci¢n del cursor de rat¢n

    Sintaxis:

         rCursorOn() -> NIL

    Descripci¢n:

         Muestra el cursor de rat¢n. M£ltiples llamadas a rCursorOff()
         requerirar n m£ltiples llamadas a esta funci¢n para mostrarlo de
         nuevo.

    Valor de Retorno:

         Nada.

    Ejemplo:

         rCursorOn()

See Also: "rCursorOff()" 


    rClick()

                                 - Page 180 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Determina si alg£n bot¢n est  pulsado

    Sintaxis:

         rClick() -> lPush

    Descripci¢n:

         Determina si alg£n bot¢n est  pulsado retornando un valor l¢gico.

    Valor de Retorno:

         Un valor l¢gico indicando si est  pulsado o no.

    Ejemplo:

         If rClick()
           ? "Si"
         EndIf

See Also: "rCentre()" "rRight()" "rLeft()" 


    rGetPosX()

         Retorna la coordenada horizontal del rat¢n

    Sintaxis:

         rGetPosX() -> nCoorX

    Descripci¢n:

         Retorna la coordenada horizontal del rat¢n.

    Valor de Retorno:

         Un n£mero indicando la posici¢n en X.

    Ejemplo:

         ? rGetPosX()

See Also: "rGetPosY()" 


    rGetPosY()

         Retorna la coordenada vertical del rat¢n

    Sintaxis:

         rGetPosY() -> nCoorY


                                 - Page 181 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Descripci¢n:

         Retorna la coordenada vertical del rat¢n.

    Valor de Retorno:

         Un n£mero indicando la posici¢n en Y.

    Ejemplo:

         ? rGetPosY()

See Also: "rGetPosX()" 


    rHardCur()

         Define el cursor del rat¢n via Hardware

    Sintaxis:

         rHardCur() -> NIL

    Descripci¢n:

         Cuando el software cursor es seleccionado, el car cter/atributo
         de la posici¢n seleccionada es ANDed con la m scara de pantalla y
         XORed con la mascara de cursor.

    Valor de Retorno:

         Nada.

    Ejemplo:

         rHardCur()

See Also: "rSoftCur()" 


    rInArea()

         Determina si el rat¢n est  en una zona de la pantalla

    Sintaxis:

         rInArea( nY1, nX1, nY2, nX2 ) -> lHere

         nY1, nX1, nY2, nX2 : Las coordenadas de la zona.

    Descripci¢n:

         Determina si el rat¢n est  dentro o fuera de una zona de la
         pantalla.


                                 - Page 182 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Valor de Retorno:

         Un valor l¢gico indicando si est  dentro o fuera de la zona
         especificada.

    Ejemplo:

         If rInArea ( 10, 10, 12, 20 )
           Warning ( "Mouse ok" )
         EndIf


    rInkey()

         Hace lo mismo que Inkey() pero atiende al rat¢n

    Sintaxis:

         rInkey() -> nKey

    Descripci¢n:

         Hace lo mismo que Inkey() pero atiende al rat¢n

    Valor de Retorno:

         Retorna lo mismo que inKey() o 1001 si el bot¢n izquierdo es
         pulsado, 1002 si el bot¢n derecho es pulsado o 1003 si se pulsa
         el bot¢n central.

    Ejemplo:

         nKey := rInkey(0)
         If nKey > 1000
           Warning ( "Bot¢n de rat¢n pulsado" )
         ElseIf nKey != 0
           Warning ( "Tecla pulsada" )
         Else
           Warning ( "Nada" )
         EndIf

See Also: "rInkey2()" 


    rInkey2()

         Hace lo mismo que Inkey() pero atiende al rat¢n y Setkey()

    Sintaxis:

         rInkey() -> nKey

    Descripci¢n:

         Hace lo mismo que Inkey() pero atiende al rat¢n y Setkey()

                                 - Page 183 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Valor de Retorno:

         Retorna lo mismo que inKey() o 1001 si el bot¢n izquierdo es
         pulsado, 1002 si el bot¢n derecho es pulsado o 1003 si se pulsa
         el bot¢n central.

    Ejemplo:

         SetKey ( 1001, { || Warning ( "Mouse Left pulsado"  } )
         SetKey ( 1002, { || Warning ( "Mouse Right pulsado" } )
         SetKey ( 1003, { || Warning ( "Mouse Central pulsado" } )
         nKey := rInkey2(0)
         If nKey != 0
           Warning ( "Tecla pulsada" )
         Else
           Warning ( "Nada" )
         EndIf

See Also: "rInkey()" 


    rIsMouse()

         Indica si el sistema dispone de rat¢n

    Sintaxis:

         rIsMouse() -> lMouse

    Descripci¢n:

         Determina si el sistema tiene un rat¢n y un driver de rat¢n
         correctamente instalados.

    Valor de Retorno:

         Un valor l¢gico indicando si el sistema tiene rat¢n.

    Ejemplo:

         If rIsMouse()
           Warning ( "Si" )
         EndIf

See Also: "rReset()" 


    rLeft()

         Determina si el bot¢n izquierdo est  pulsado

    Sintaxis:

         rLeft() -> lPress

                                 - Page 184 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Descripci¢n:

         Determina si el bot¢n izquierdo est  pulsado retornando un valor
         l¢gico.

    Valor de Retorno:

         Un l¢gico indicando si est  pulsado o no.

    Ejemplo:

         If rLeft()
           Warning ( "Left button pulsado" )
         EndIf

See Also: "rCentre()" "rRight()" 


    rReset()

         Reinicializa el driver de rat¢n

    Sintaxis:

         rReset() -> NIL

    Descripci¢n:

         Produce una reinicializaci¢n hardware del driver de rat¢n.

    Valor de Retorno:

         Nada.

    Ejemplo:

         rReset()

See Also: "rIsMouse()" 


    rRight()

         Determina si el bot¢n derecho est  pulsado

    Sintaxis:

         rRight() -> lPress

    Descripci¢n:

         Determina si el bot¢n derecho est  pulsado retornando un valor
         l¢gico.


                                 - Page 185 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Valor de Retorno:

         Un l¢gico indicando si est  pulsado o no.

    Ejemplo:

         If rRight()
           Warning ( "Right button pulsado" )
         EndIf

See Also: "rCentre()" "rLeft()" 


    rSens()

         Define el n£mero de mickeys por pixel

    Sintaxis:

         rSens( nSensHor, nSensVer ) -> NIL

         nSensHor : Un n£mero indicando el n£mero de mickeys por pixel en
                    horizontal. Por defecto es 8.
         nSensVer : Un n£mero indicando el n£mero de mickeys por pixel en
                    vertical. Por defecto es 16.

    Descripci¢n:

         Define el n£mero de mickeys por pixel horizontal y verticalmente.

    Valor de Retorno:

         Nada.

    Ejemplo:

         rSens( 3, 12 )


    rSetArea()

         Indica la zona donde el rat¢n est  activo

    Sintaxis:

         rSetArea( nY1, nX1, nY2, nX2 ) -> NIL

         nY1 : coordenada Y inicial
         nX1 : coordenada X inicial
         nY2 : coordenada Y final
         nX2 : coordenada X final

    Descripci¢n:

         Indica la zona donde el rat¢n puede estar activo. El sistema no

                                 - Page 186 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         permitir  al puntero moverse fuera de esta zona.

    Valor de Retorno:

         Nada.

    Ejemplo:

         rSetArea ( 12, 20, 15, 60 )


    rSetPos()

         Cambia la posici¢n del cursor de rat¢n

    Sintaxis:

         rSetPos( nRow, nCol ) -> NIL

         nRow : Nueva l¡nea para el rat¢n
         nCol : Nueva columna para el rat¢n

    Descripci¢n:

         Cambia el cursor de rat¢n a una nueva posici¢n.

    Valor de Retorno:

         Nada.

    Ejemplo:

         rSetPos ( 12, 20 )


    rSoftCur()

         Define el cursor de rat¢n via Software

    Sintaxis:

         rSoftCur() -> NIL

    Descripci¢n:

         Cuando el software cursor es seleccionado, el car cter/atributo
         de la posici¢n seleccionada es ANDed con la m scara de pantalla y
         XORed con la mascara de cursor.

    Valor de Retorno:

         Nada.

    Ejemplo:


                                 - Page 187 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         rSoftCur()

See Also: "rHardCur()" 


    rVersion()

         Devuelve informaci¢n sobre el rat¢n

    Sintaxis:

         rVersion() -> aInfo

    Descripci¢n:

         Devuelve informaci¢n sobre el rat¢n conectado al sistema y sobre
         el driver.

    Valor de Retorno:

         Un array con 3 elementos

            aInfo[ 1 ] -> Versi¢n del driver
            aInfo[ 2 ] -> IRQ usada por el driver
            aInfo[ 3 ] -> Tipo de rat¢n:
                            1 -> "bus"
                            2 -> "serial"
                            3 -> "InPort"
                            4 -> "PS/2"
                            5 -> "HP"

    Ejemplo:

         LOCAL aTypes := { "bus", "serial", "InPort", "PS/2", "HP" }

         IF rIsMouse()
           aInfo := rVersion()
           ? "Mouse driver version " + aInfo[ 1 ]
           ? "IRQ number " + ALLTRIM( STR( aInfo[ 2 ] ) )
           ? aTypes[ aInfo[ 3 ] ] + " mouse installed"
         ENDIF














                                 - Page 188 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 2, Impresora




    Con estas funciones puede controlar la impresi¢n en Clipper. Tambi‚n
 podr  controlar la cola del comando PRINT del DOS.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    GetPrinter()

         Retorna el estado de la impresora

    Sintaxis:

         GetPrinter( [nPrinter] ) -> nStatus

         nPrinter : N£mero de puerto. 0 = LPT1, 1 = LPT2...
                    Por defecto verifica la impresora 0

    Descripci¢n:

         Determina si la impresora est  preparada, sin papel, apagada o si
         no hay impresora.

    Valor de Retorno:

         Un n£mero indicando el estado de la impresora despu‚s del £ltimo
         acceso a la misma.


           0 READY       ->  Preparada
           1 BUSY        ->  No acepta comandos
           2 PAPER       ->  Sin papel
           3 NOTHERE     ->  No hay impresora
           4 LAN         ->  Impresora de red
           5 ISOFF       ->  No preparada

    Ejemplo:

         nStatus := GetPrinter()
         If nStatus == 0 .Or. nStatus == 4
           Warning ( "Impresora preparada" )
         EndIf


    IsPrint()

         Determina si PRINT.EXE est  cargado

    Sintaxis:

         IsPrint() -> lLoaded

                                 - Page 189 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Descripci¢n:

         Determina si PRINT.EXE est  cargado en memoria.

    Valor de Retorno:

         Un valor l¢gico indicando si est  cargado o no.

    Ejemplo:

         If IsPrint()
           Warning ( "PRINT ha sido cargado" )
         EndIf


    pAddFile()

         A¤ade un fichero a la cola de PRINT

    Sintaxis:

         pAddFile( cFile ) -> lError

         cFile : El fichero que va a ser impreso

    Descripci¢n:

         A¤ade un fichero a la cola de PRINT.
         Verifique que PRINT.EXE est  instalado antes de usar esta funci¢n.
         El fichero debe ser indicado con path completo, ej. C:\DOS\ANSI.SYS

    Valor de Retorno:

         .T. si todo va bien o .F. si alg£n problema.

    Ejemplo:

         If ! pAddFile( "c:\autoexec.bat" )
           Warning ( "Error" )
         EndIf

See Also: "IsPrint()" "pDelAll()" "pDelFile()" "pError()" "pRestart()" 


    pDelAll()

         Borra todos los ficheros de la cola de PRINT

    Sintaxis:

         pDelAll() -> lError

    Descripci¢n:


                                 - Page 190 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Borra todos los ficheros de la cola de PRINT.
         Verifique que PRINT.EXE est  instalado antes de usar esta funci¢n.

    Valor de Retorno:

         .T. si todo va bien o .F. si alg£n problema.

    Ejemplo:

         If ! pDelAll()
           Warning ( "Error" )
         EndIf

See Also: "IsPrint()" "pAddFile()" "pDelFile()" "pError()" "pRestart()" 


    pDelFile()

         Borra un fichero de la cola de PRINT

    Sintaxis:

         pDelFile( cFile ) -> lError

         cFile : El fichero a borra de la cola.

    Descripci¢n:

         Borra un fichero de la cola de PRINT.
         Verifique que PRINT.EXE est  instalado antes de usar esta funci¢n.
         El fichero debe ser indicado con path completo, ej. C:\DOS\ANSI.SYS

    Valor de Retorno:

         .T. si todo va bien o .F. si alg£n problema.

    Ejemplo:

         pAddFile ( "c:\config.sys" )
         If ! pDelFile( "c:\config.sys" )
           Warning( "Error" )
         EndIf

See Also: "IsPrint()" "pAddFile()" "pDelAll()" "pError()" "pRestart()" 



         Indica si PRINT se ha detenido por alg£n error

    Sintaxis:

         pError() -> lError

    Descripci¢n:


                                 - Page 191 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Indica si PRINT ha detectado alg£n error o problema y ha detenido
         la cola de impresi¢n.
         Verifique que PRINT.EXE est  instalado antes de usar esta funci¢n.

    Valor de Retorno:

         .T. si hay alg£n error .F. si todo est  correcto.

    Ejemplo:

         If ! pError()
           Warning ( "Ok" )
         EndIf

See Also: "IsPrint()" "pAddFile()" "pDelAll()" "pDelFile()" "pRestart()" 


    pQueue()

         Retorna la cola de PRINT

    Sintaxis:

         pQueue() -> aQueue

    Descripci¢n:

         Retorna la cola de PRINT.
         Verifique que PRINT.EXE est  instalado antes de usar esta funci¢n.

    Valor de Retorno:

         Un array con los ficheros de la cola de PRINT.

    Ejemplo:

         If IsPrint()
           aQueue := pQueue()
           For nInd := 1 To Len( aQueue )
             ? aQueue[ nInd ]
           Next
         EndIf

See Also: "IsPrint()" "pAddFile()" "pDelAll()" "pDelFile()" "pError()" 


    pRestart()

         Rearranca la cola de PRINT

    Sintaxis:

         pRestart() -> lError

    Descripci¢n:

                                 - Page 192 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Rearranca la cola de PRINT.
         Verifique que PRINT.EXE est  instalado antes de usar esta funci¢n.

    Valor de Retorno:

         .T. si puede ser restaurada .F. si no puede recuperarse del error.

    Ejemplo:

         If pError()
           If pRestart()
             Warning ( "Restaurando cola..." )
           Else
             Warning ( "La cola est  parada" )
           Endif
         Else
           Warning ( "Todo correcto" )
         EndIf

See Also: "IsPrint()" "pAddFile()" "pDelAll()" "pDelFile()" "pError()" 


    PrtScr()

         Imprime la pantalla actual

    Sintaxis:

         PrtScr() -> NIL

    Descripci¢n:

         Imprime la pantalla actual. Esto es funcionalmente equivalente a
         la tecla Shift-PrtScrn.

    Valor de Retorno:

         Nada.

    Ejemplo:

         PrtScr()                       // Imprime la pantalla

See Also: "SetHardCopy()" 


    SetHardCopy()

         Activa/desactiva el hardcopy del sistema

    Sintaxis:

         SetHardCopy( lEnable ) -> NIL


                                 - Page 193 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         lEnable : Un valor l¢gico indicando si activar (.T.) o
                   desactivar (.F.) el hardcopy

    Descripci¢n:

         Esta funci¢n activa o desactiva el hardcopy generado por la tecla
         PrtScr key.

    Valor de Retorno:

         Un valor l¢gico indicando si el hardcopy est  activo o no.

    Ejemplo:

         SetHardCopy( .F. )                 // desactiva hardcopy

See Also: "PrtScr()" 


    ToPrint()

         Imprime un string en la impresora

    Sintaxis:

         ToPrint( cString ) -> NIL

         cString : El string que debe ser impreso.

    Descripci¢n:

         Imprime un string en la impresora con un CR/LF.
         No abra ni cierre el puerto, esta funci¢n lo har  por usted.

    Valor de Retorno:

         Nada.

    Ejemplo:

         ToPrint ( "Este string ir  a la impresora" )














                                 - Page 194 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 2, Pantalla




    Estas funciones ayudan en los accesos a la pantalla con Clipper.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    BigLetter()

         Retorna un array con un banner gigante de una letra

    Sintaxis:

         BigLetter( nLetter ) -> aFormat

         aLetter : El valor ascii de la letra

    Descripci¢n:

         Crea y retorna un array con el formato de una letra para crear un
         banner.

    Valor de Retorno:

         Un array.

    Ejemplo:

         BigLetter( Chr( "A" ) )  // retorna      { "     Û     ", ;
                                                    "    Û Û    ", ;
                                                    "   ÛÛ ÛÛ   ", ;
                                                    "  ÛÛ   ÛÛ  ", ;
                                                    ...          , ;
                                                  }

See Also: "BigString()" "SmallLetter()" "SmallString()" 


    BigString()

         Muestra un banner gigante con un string especificado

    Sintaxis:

         BigString( nRow, nCol, cString, cColor ) -> NIL

         nRow    : L¡nea del banner
         nCol    : Columna del banner
         cString : El string a mostrar
         cColor  : El color

    Descripci¢n:

                                 - Page 195 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Crea y muestra un banner con un string especificado. Esta funci¢n
         usa BigLetter() para crear el banner.

    Valor de Retorno:

         Nada.

    Ejemplo:

         BigString( 1, 10, "Hola", "GR+/B" )

See Also: "BigLetter()" "SmallLetter()" "SmallString()" 


    BoxClose()

         Cierra una ventana con foco de luz

    Sintaxis:

         BoxClose ( aBox ) -> NIL

         aBox : Un array con la ventana

    Descripci¢n:

         Cierra una ventana con foco de luz y restaura la pantalla.

    Valor de Retorno:

         Nada

    Ejemplo:

         BoxClose ( aBox )

See Also: "BoxOpen()" "BoxDelete()" "BoxPush()" 


    BoxDelete()

         Borra el contenido de una ventana con foco de luz

    Sintaxis:

         BoxDelete( aBox ) -> NIL

         aBox : Un array con la ventana

    Descripci¢n:

         Borra el contenido de una ventana con foco de luz haciendo un
         efecto push sobre la misma.


                                 - Page 196 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Valor de Retorno:

         Nada.

    Ejemplo:

         BoxDelete ( aBox )

See Also: "BoxOpen()" "BoxClose()" "BoxPush()" 


    BoxOpen()

         Crea una ventana con foco de luz

    Sintaxis:

         BoxOpen ( nTop, nLeft, nBottom, nRight, cColor, nFast ) -> aBox

         nTop    : Y inicial de la ventana.
         nLeft   : X inicial.
         nBottom : Y Final.
         nRight  : X Final.
         cColor  : Color de fondo de la ventana
         nFast   : Velocidad de pulsaci¢n de la ventana

    Descripci¢n:

         Abre una ventana en la posici¢n y color dados.
         El color es para el fondo y su valor no debe exceder el 7
         ( No puede incluir el caracter "+" )

    Valor de Retorno:

         Un array con informaci¢n de la ventana.

    Ejemplo:

         BoxOpen ( 12, 10, 14, 40, "B", 0.2 )

See Also: "BoxDelete()" "BoxClose()" "BoxPush()" 


    BoxMessage()

         Escribe un mensaje en una ventana con foco de luz

    Sintaxis:

         BoxMessage( cMessage, [nY], [nX], [cColor] ) -> aWindow

         cMessage : El mensaje a mostrar
         nY       : Cooerdenada Y de la ventana. ( Defecto: 7 )
         nX       : Cooredenada X de la ventana. ( Defecto: Centrada )
         cColor   : Color de la ventana. ( Defecto: "B" )

                                 - Page 197 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Descripci¢n:

         Muestra un mensaje en la ventana. Si la coordenada Y no es
         especificada, se asume el valor 7. Si la coordenada X no se
         especifica, la ventana se centra dependiendo de la longitud
         del mensaje. El color por defecto es "B".

         Recuerde que no puede usar el caracter "+" para los colores de
         las ventanas con foco de luz.

    Valor de Retorno:

         Un array con la informaci¢n sobre la ventana.

    Ejemplo:

         nCursor  := SetCursor ( 0 )
         aButton  := BoxMessage ( "Fast Library For Clipper", 12, , "G" )
         Inkey(0)
         BoxPush ( abutton )
         Delay ( .1 )
         BoxClose ( abutton )
         SetCursor ( nCursor )

See Also: "Message()" 


    BoxPush()

         Hace un efecto de pushing en una ventana con foco de luz

    Sintaxis:

         BoxPush ( aBox ) -> NIL

         aBox : Un array con informaci¢n sobre la ventana

    Descripci¢n:

         Hace un efecto de pushing effect en la ventana a la velocidad
         especificada en BoxOpen()

    Valor de Retorno:

         Nada.

    Ejemplo:

         BoxPush ( aBox )

See Also: "BoxOpen()" "BoxDelete()" "BoxClose()" 


    BoxQuery()

                                 - Page 198 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Hace una pregunta y retorna un valor l¢gico

    Sintaxis:

         BoxQuery( cQuery ) -> lAnswer

         cQuery : Questi¢n a mostrar en la pantalla

    Descripci¢n:

         Hace una pregunta usando una ventana con foco de luz y retorna un
         valor l¢gico.

    Valor de Retorno:

         Un l¢gico, de acuerdo con la respuesta.

    Ejemplo:

         If BoxQuery ( "¨Desea salir del programa? (S/N)" )
           Warning( "Saliendo..." )
         EndIf

See Also: "Query()" 


    BoxTurn()

         Establece on/off en una ventana con foco de luz

    Sintaxis:

         BoxTurn ( aBox [, lMode] ) -> NIL

         aBox  : Un array con informaci¢n sobre la ventana
         lMode : El nuevo modo de visualizaci¢n. ( Por defecto .T. )

    Descripci¢n:

         Invierte la orientaci¢n de una ventana con foco de luz. Si lMode
         es .T. la ventana se mostrar  en modo normal; Si es .F. se
         mostrar  en modo pulsaci¢n.

    Valor de Retorno:

         Nada.

    Ejemplo:

         BoxTurn ( aBox, .T. )

See Also: "BoxOpen()" "BoxDelete()" "BoxClose()" "BoxPush()" 



                                 - Page 199 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    BoxWarning()

         Muestra un aviso en una ventana con foco de luz

    Sintaxis:

         BoxWarning( xWarning ) -> NIL

         xWarning : Mensaje a mostrar. Puede ser un string o un array de
                    strings.

    Descripci¢n:

         Abre una ventana con foco de luz y muestra un mensaje, esperando
         hasta que se pulse una tecla.

    Valor de Retorno:

         Nada.

    Ejemplo:

         BoxWarning ( "Hola mundo" )
         BoxWarning ( { "Hello", "", "What are you doing?" } )

See Also: "Warning()" 


    Fascinate()

         Realiza un efecto de color en la pantalla

    Sintaxis:

         Fascinate( cColor1, cColor2 ) -> NIL

         cColor1 : Color inicial, que no debe exceder de 7.
         cColor2 : Color final.

    Descripci¢n:

         Hace un cambio gradual de color en modo texto variando desde cColor1
         hasta cColor2. Use colores claros u oscuros pero no los mezcle o el
         efecto perder  gran parte de su belleza.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Fascinate( "BG", "G" )
         Fascinate( "G", "GR" )



                                 - Page 200 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    FastPrint()

         Muestra un mensaje en la pantalla

    Sintaxis:

         FastPrint( nY, nX, cMessage, nColor ) -> NIL

         nY       : coordinate Y
         nX       : coordinate X
         cMessage : Mensaje a mostrar
         nColor   : Un n£mero con el color

    Descripci¢n:

         Imprime un mensaje en la pantalla. Es muy r pida, casi un 50% m s
         r pida que el propio Clipper accediendo al v¡deo.

    Valor de Retorno:

         Nada.

    Ejemplo:

         #define HIWHITE 15

         FastPrint( 10, 12, "I want to be free...", HIWHITE )


    File2Scr()

         Restaura la pantalla desde un fichero

    Sintaxis:

         File2Scr( cFile ) -> lSuccess

         cFile : El nombre del fichero con la pantalla

    Descripci¢n:

         Restaura la pantalla desde un fichero. El nombre de fichero por
         defecto es FAST.SCR.

    Valor de Retorno:

         Un l¢gico indicando si se produjo alg£n error.

    Ejemplo:

         If ! File2Scr ( "MyScreen.Scr" )
           Return ( NIL )
         EndIf

See Also: "Scr2File()" 

                                 - Page 201 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'




    GetChar()

         Retorna alg£n car cter de la pantalla

    Sintaxis:

         GetChar( nY, nX ) -> cChar

         nY : La coordenada Y
         nX : La coordenada X

    Descripci¢n:

         Retorna el car cter de la posici¢n de pantalla especificada.

    Valor de Retorno:

         El car cter de la pantalla.

    Ejemplo:

         ? GetChar ( 22, 10 )                   // "c"


    Implode()

         Restaura una regi¢n de la pantalla

    Sintaxis:

         Implode( nY1, nX1, nY2, nX2, cScr [, nDelay] ) -> NIL

         nY1    : Coordenada Y1 de la regi¢n
         nX1    : Coordenada X1 de la regi¢n
         nY2    : Coordenada Y2 de la regi¢n
         nX2    : Coordenada X2 de la regi¢n
         cScr   : La pantalla salvada con SaveScreen()
         nDelay : Tiempo de delay. Por defecto 10.

    Descripci¢n:

         Restaura una pantalla o parte de ella que ha sido salvada con
         SaveScreen().

         Es una espectacular alternativa a RestScreen(). Restaura la pantalla
         haciendo un efecto de exposi¢n.

    Valor de Retorno:

         Nada.

    Ejemplo:


                                 - Page 202 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         cScr := SaveScreen( 10, 10, 20, 70 )
         DispBox( 10, 10, 20, 70, "ÉÍ»º¼ÍÈº ", "W/B" )
         Inkey( 0 )
         Implode( 10, 10, 20, 70, cScr, 30 )


    Message()

         Muestra un string en la pantalla

    Sintaxis:

         Message( nY, nX, cMess [, cColor] ) -> NIL

         nY     : Coordenada Y
         nX     : Coordenada X
         cMess  : Mensaje a imprimir
         cColor : Color

    Descripci¢n:

         Escribe un mensaje en las coordenadas y color especificados.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Message ( 12, 15, "Hola", "R/B" )

See Also: "Warning()" "Query()" 


    NewBox()

         Abre una ventana con explosi¢n

    Sintaxis:

         NewBox( nY1, nX1, nY2, nX2, [cTitle], cBox, lShadow, ;
                 [cColor], [nIter], [nDelay] ) -> NIL

         nY1     : Coordenada Y1
         nX1     : Coordenada X1
         nY2     : Coordenada Y2
         nX2     : Coordenada X2
         ctitle  : T¡tulo de la ventana
         cBox    : Marco de la ventana
         lShadow : Un l¢gico indicando si se desea sombra
         cColor  : Color de la ventana
         nIter   : N£mero de iteraciones de la explosi¢n. Por defecto 6
         nDelay  : Tiempo de retardo. Por defecto 10

    Descripci¢n:

                                 - Page 203 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Dibuja una ventana en las coordenadas dadas con el t¡tulo ctitle
         o sin t¡tulo si ctitle es NIL y con o sin sombra dependiendo de
         lShadow.
         El color de la ventana es cColor o el color activo si cColor es
         NIL.
         La velocidad de la explosi¢n de la ventana is definido por nInter.

    Valor de Retorno:

         Nada.

    Ejemplo:

         NewBox( 10, 15, 20, 25, "T¡tulo", "ÉÍ»º¼ÍÈº ", .T., "GR+/B", 12 )

See Also: "Window()" 


    Query()

         Hace una pregunta y retorna un l¢gico

    Sintaxis:

         Query( cQuery [, cColor] ) -> NIL

         cQuery : Questi¢n a realizar
         cColor : Color del mensaje

    Descripci¢n:

         Hace un pregunta en la l¡nea 24 y espera hasta que el usuario
         conteste S o N.

    Valor de Retorno:

         Un l¢gico indicando la respuesta.

    Ejemplo:

         Query ( "¨Habla castellano? (S/N)", "R/B" )

See Also: "Warning()" "Message()" 


    RestScr()

         Restaura una regi¢n de la pantalla

    Sintaxis:

         RestScr( nY1, nX1, nY2, nX2, aScr [, nDelay] ) -> NIL

         nY1    : Coodenada Y1

                                 - Page 204 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         nX1    : Coodenada X1
         nY2    : Coodenada Y2
         nX2    : Coodenada X2
         aScr   : La pantalla salvada con SaveScr()
         nDelay : Tiempo de retardo. Por defecto 20.

    Descripci¢n:

         Restaura una regi¢n de la pantalla, salvada previamente por
         SaveScr(), con un espectacular efecto.

    Valor de Retorno:

         Nada.

    Ejemplo:

         nMode := 2
         aScr  := SaveScr ( 10, 10, 20, 70, nMode )
         DispBox ( 10, 10, 20, 70, "ÉÍ»º¼ÍÈº ", "W/B"  )
         Inkey(1)
         RestScr ( 10, 10, 20, 70, aScr )

See Also: "SaveScr()" 


    SaveScr()

         Salva una regi¢n de la pantalla

    Sintaxis:

         SaveScr( nY1, nX1, nY2, nX2, nEffect ) -> aScreen

         nY1     : Coordenada Y1
         nX1     : Coordenada X1
         nY2     : Coordenada Y2
         nX2     : Coordenada X2
         nEffect : Un n£mero indicando el tipo de efecto
                   1 -> izquierda - derecha
                   2 -> derecha - izquierda
                   3 -> arriba - abajo
                   4 -> abajo - arriba

    Descripci¢n:

         Salva una regi¢n de la pantalla que podr  ser posteriormente
         restaurada con RestScr().

    Valor de Retorno:

         Saved screen region.

    Ejemplo:


                                 - Page 205 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         nMode := 1
         aScr  := SaveScr ( 10, 10, 20, 70, nMode )
         DispBox ( 10, 10, 20, 70, "ÉÍ»º¼ÍÈº ", "W/B"  )
         Inkey(1)
         RestScr ( 10, 10, 20, 70, aScr )

See Also: "RestScr()" 


    Scr2File()

         Salva la pantalla a un fichero

    Sintaxis:

         Scr2File( cFile ) -> lError

         cFile : El nombre del fichero

    Descripci¢n:

         Salva la pantalla a un fichero. El nombre del fichero por defecto
         es FAST.SCR.

    Valor de Retorno:

         A logic value indicating if an error is found.

    Ejemplo:

         If ! Scr2File ( "Screen.Scr" )
           Warning ( "Imposible!!!" )
         EndIf

See Also: "File2Scr()" 


    Screen()

         Limpia la pantalla con un color y string opcionales

    Sintaxis:

         Screen( [cString], [cColor] ) -> NIL

         cString : String a mostrar en la pantalla
         cColor  : Color opcional

    Descripci¢n:

         Limpia la pantalla con un color y string opcionales. El string se
         mostrar  en la pantalla repetidamente en forma de trama.

    Valor de Retorno:


                                 - Page 206 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Nada.

    Ejemplo:

         Screen()                          // cls usual
         Screen( "Fast Library " )         // cls con string
         Screen( "Fast Library ", "R/B" )  // cls con string y color


    SetFont()

         Cambia la fuente de caracteres

    Sintaxis:

         SetFont( cFile, lGraphMode ) -> nError

         cFile      : El nombre del fichero con la nueva fuente
         lGraphMode : Un l¢gico indicando si est  en modo gr fico.
                      Por defecto es .F. indicando modo texto.

    Descripci¢n:

         Cambia el puntero de la zona de la BIOS donde est  situada la
         fuente de caracteres. Una nueva fuente es situada en memoria.

    Valor de Retorno:

         Un valor num‚rico indicando:

                0       Ok
               -1       El fichero no existe
               -2       La estructura del fichero es incorrecta

    Ejemplo:

         If Empty( SetFont ( "c:\os2\mdos\myappl\fonts\roman.fon" ) )
           ? "Ok"
         EndIf

         ¢

         SetVGA()
         SetFont( "c:\dos\fonts\script.fon", .T. )

See Also: "SetFontChar()" 


    SetFontChar()

         Cambia un car cter de la fuente actual

    Sintaxis:

         SetFontChar( cString, nChar, lGraphMode ) -> NIL

                                 - Page 207 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         cString    : Un string de 16 bytes con el nuevo car cter
         nChar      : Un n£mero indicando el valor ascii del car cter a
                      cambiar
         lGraphMode : Un l¢gico indicando si est  en modo gr fico.
                      Por defecto es .F. indicando modo texto.

    Descripci¢n:

         Cambia el puntero de la zona de la BIOS donde est  situada la
         fuente de caracteres. Una nueva fuente es situada en memoria.

    Valor de Retorno:

         Nada.

    Ejemplo:

         lMode := .T.                               // en modo gr fico
         cNewA := Replicate( Chr( 255 ), 16 )
         SetFontChar( cNewA, Ascii( "A" ), lMode )  // la "A" ser  un "Û"

See Also: "SetFont()" 


    SetGray()

         Crea un monitor b/w virtual

    Sintaxis:

         SetGray( lGray ) -> NIL

         lGray : Un l¢gico indicando si desea un monitor b/w virtual

    Descripci¢n:

         Esta funci¢n permite simular un monitor b/w.
         Es muy £til cuando se desea probar aplicaciones en monitores b/w.

    Valor de Retorno:

         Nada.

    Ejemplo:

         cPalette := GetPalette()
         SetGray( .T. )
         BoxWarning( "El monitor es b/w!!!" )
         SetGray( .F. )
         SetPalette( cPalette )
         BoxWarning( "El monitor es color!!!, por supuesto" )


    SmallLetter()

                                 - Page 208 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Retorna un array con un banner comprimido de una letra

    Sintaxis:

         SmallLetter( nLetter ) -> aFormat

         aLetter : El valor ASCII de la letra

    Descripci¢n:

         Crea y retorna un array con el formato de una letra para crear un
         banner comprimido.

    Valor de Retorno:

         Un array.

    Ejemplo:

         SmallLetter( Chr( "A" ) )  // retorna    { "    ÜßÜ    ", ;
                                                    "  ÜÛß ßÛÜ  ", ;
                                                    "  ßß   ßß  ", ;
                                                    ...          , ;
                                                  }

See Also: "BigString()" "BigLetter()" "SmallString()" 


    SmallString()

         Muestra un banner comprimido con un string especificado

    Sintaxis:

         SmallString( nRow, nCol, cString, cColor ) -> NIL

         nRow    : L¡nea del banner
         nCol    : Columna del banner
         cString : El string a mostrar
         cColor  : El color

    Descripci¢n:

         Crea y muestra un banner con el string especificado. Esta funci¢n
         usa SmallLetter() para crear el banner.

    Valor de Retorno:

         Nada.

    Ejemplo:

         SmallString( 1, 10, "Hola", "GR+/B" )


                                 - Page 209 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


See Also: "BigLetter()" "BigLetter()" "SmallLetter()" 


    Wall()

         Simula un muro

    Sintaxis:

         Wall( [nY1], [nX1], [nY1], [nX2], [cColor] ) -> NIL

         nY1    : Coordenada Y1, por defecto 0
         nX1    : Coordenada X1, por defecto 0
         nY2    : Coordenada Y2, por defecto 24
         nX2    : Coordenada X2, por defecto 79
         cColor : El color, opcional

    Descripci¢n:

         Dibuja un muro en las coordenadas especificadas.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Wall( 1, 1, 20, 51, "W/G" )
         Wall( , , , , "GR/N" )


    Warning()

         Muestra un mensaje en la l¡nea 24

    Sintaxis:

         Warning( cWarning, [lMode], [cColor] ) -> NIL

         cWarning : El aviso a mostrar
         lMode    : El modo de acci¢n, opcional
         cColor   : El color, opcional

    Descripci¢n:

         Si lMode es .T. la funci¢n muestra un mensaje y espera a que se
         pulse una tecla, restaurando posteriormente la pantalla. Si lMode
         es .F., no espera a que se pulse una tecla ni restaura la pantalla
         Por defecto es .T. Color por defecto "W/N".

    Valor de Retorno:

         Nada.

    Ejemplo:

                                 - Page 210 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Warning( "Pulse una tecla" )
         Warning( "Procesando, por favor, espere...", .F. )

See Also: "Message()" "Query()" 


    Window()

         Dibuja una ventana con t¡tulo y sombra opcionales

    Sintaxis:

         Window( nY1, nX1, nY2, nX2, [cTitle], cBox, lShadow, ;
                  [cColor] ) -> NIL

         nY1     : Coordenada Y1
         nX1     : Coordenada X1
         nY2     : Coordenada Y2
         nX2     : Coordenada X2
         ctitle  : El t¡tulo, opcional
         cBox    : El tipo de caja
         lShadow : Un l¢gico indicando si se desea sombra
         cColor  : El color, opcional

    Descripci¢n:

         Dibuja una ventana en las coordenadas dadas con t¡tulo opcional
         (sin t¡tulo si ctitle es NIL) y sombra si lShadow es .T..
         El color de la ventana es cColor o el color activo si cColor es NIL.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Window ( 10, 15, 20, 25, "Mi t¡tulo", "ÉÍ»º¼ÍÈº ", .T., "GR+/B" )

See Also: "NewBox()" 















                                 - Page 211 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 2, Comunicaciones Serie




    Con esta secci¢n se controlan las comunicaciones serie desde Clipper.
 Las funciones trabajan a bajo nivel y unan un servicio gestor de
 interrupciones para comunicarse con los puertos serie.

    Estas funciones manejan 4 puertos serie, desde COM1 a COM4 en sistemas
 AT y 2 puertos, COM1 y COM2 en sistemas XT.

    El sistema es compatible con todas las UART's existentes en el mercado
 para PC-XT-AT. El acceso al sistema se hace via 8259A, lo cual, deja a las
 rutinas de la BIOS la compatibilidad con la UART.

    El sistema tiene buffers internos y externos disponibles (del mismo tipo
 que la BIOS provee para el teclado). Gracias a ellos, se pueden retener en
 la memoria las llegadas y salidas para usarlas cuando se est  preparado para
 recivir o enviar. El buffer de entrada tiene un tama¤o de 16384 bytes y el
 de salida de 4096 bytes.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    ComCarrier()

         Determina si el flag Carrier est  arriba

    Sintaxis:

         ComCarrier() -> lCarrier

    Descripci¢n:

         Determines if the Carrier flag is active. This flag must be
         specifically looked at for transmissions or receptions to confirm
         that the connection is still active. If the carrier is lost, it
         could indicate that the other end of the communication link has
         disconnected.

    Valor de Retorno:

         .T. si el flag Carrier est  arriba

    Ejemplo:

         If ! ComCarrier()
           Warning( "NO CARRIER" )
         Else
           Warning( "CARRIER DETECTED" )
         EndIf

See Also: "ComReady()" 


                                 - Page 212 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    ComHighDTR()

         Activa el flag Data Terminal Ready

    Sintaxis:

         ComHighDTR() -> NIL

    Descripci¢n:

         ComHighDTR() activa el flag Data Terminal Ready (DTR).

    Valor de Retorno:

         Nada.

    Ejemplo:

         ComHighDTR()           // Activa el flag DTR

See Also: "ComLowDTR()" 


    ComIsEmpt()

         Determina si el buffer de entrada est  vacio

    Sintaxis:

         ComInEmpt() -> lEmpty

    Descripci¢n:

         Determina si el buffer de entrada est  vacio

    Valor de Retorno:

         Un valor l¢gico indicando si el buffer est  vacio o no.

    Ejemplo:

         If ComInEmpt()
           Warning( "Buffer de entrada vacio" )
         EndIf

See Also: "ComOutEmpt()" 


    ComInFlh()

         Inicializa los buffers de entrada

    Sintaxis:


                                 - Page 213 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         ComInFlh() -> NIL

    Descripci¢n:

         Vacia e inicializa los buffers de entrada. Este proceso lo realiza
         autom ticamente la funci¢n ComInst().

    Valor de Retorno:

         Nada.

    Ejemplo:

         ComInFlh()

See Also: "ComOutFlh()" 


    ComInput()

         Extrae un byte del buffer de entrada (input)

    Sintaxis:

         ComInput() -> nValue

    Descripci¢n:

         Extrae un byte del buffer de entrada.

         ComInput() actualiza los punteros internos del buffer para que
         apunten al siguiente byte.

    Valor de Retorno:

         El valor ascii del byte recibido desde el puerto o NIL si el buffer
         est  vacio o el gestor de comunicaciones no est  activo.

    Ejemplo:

         While .T.
           If ! ComInEmpt()
             nValue  := ComInput()
             cString += Chr( nValue )
           EndIf
         End

See Also: "ComInEmpt()" "ComInputS()" 


    ComInputS()

         Extrae un string del buffer de entrada (input str)

    Sintaxis:

                                 - Page 214 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         ComInputS( @cBuffer, nMaxChars ) -> nChars

         cBuffer   : El buffer donde retornar el string
         nMaxChars : La longitud m xima de caracteres a leer del buffer

    Descripci¢n:

         Recibe un string del buffer de entrada.

         ComInputS() actualiza los punteros internos del buffer para que
         apunten al siguiente byte.

    Valor de Retorno:

         El n£mero de caracteres le¡dos o 0 si el buffer est  vacio o el
         gestor de comunicaciones no est  activo.

    Ejemplo:

         cBuffer := Space( 1024 )
         If comInputS( @cSpace, 1024 ) == 1024
           ? "Read Ok"
         EndIf

See Also: "ComInEmpt()" "ComInput()" 


    ComInst()

         Instala el Sistema de Comunicaciones Serie

    Sintaxis:

         ComInst( nPort ) -> nError

         nPort : Puerto COM. 1=COM1, 2=COM2, 3=COM3 y 4=COM4

    Descripci¢n:

         ComInst() instala un Sistema de Comunicaciones Serie e inicializa
         los buffer de entrada/salida.

         DANGER
         El gestor de interrupciones del Sistema de Comunicaciones debe ser
         desinstalado por la funci¢n ComUnInst(). De no desinstalarse,
         causar  un colapso general del sistema.

    Valor de Retorno:

         Un n£mero con el siguiente significado:

           0    Ok
           1    Puerto especificado fuera del rango 1-4
           2    No existe UART para el puerto especificado

                                 - Page 215 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


           3    El gestor ya est  instalado

    Ejemplo:

         ComInst( 2 )           // instala el gestor en COM2

See Also: "ComUnInst()" 


    ComLowDTR()

         Desactiva el flag Data Terminal Ready

    Sintaxis:

         ComLowDTR() -> NIL

    Descripci¢n:

         ComLowDTR() desactiva el flag Data Terminal Ready (DTR).

    Valor de Retorno:

         Nada.

    Ejemplo:

         ComLowDTR()           // Desactiva el flag Data Terminal Ready

See Also: "ComHighDTR()" 


    ComOutput()

         Envia un byte al buffer de salida (output)

    Sintaxis:

         ComOutput( nValue ) -> NIL

    Descripci¢n:

         Envia un byte al buffer de salida.

         ComOutput() actualiza los punteros internos del buffer para que
         apunten al siguiente byte.

    Valor de Retorno:

         Nada.

    Ejemplo:

         While ComReady()
           ComOutput( 32 )              // envia blancos al puerto serie

                                 - Page 216 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         End

See Also: "ComOutEmpt()" "ComOutputS()" "ComReady()" 


    ComOutputS()

         Envia un string al buffer de salida (output str)

    Sintaxis:

         ComOutputS( cString ) -> NIL

    Descripci¢n:

         Envia un string al buffer de salida.

         ComOutputS() actualiza los punteros internos del buffer para que
         apunten al siguiente byte.

    Valor de Retorno:

         Nada.

    Ejemplo:

         ComOutputS( "Most people like parties" )

See Also: "ComOutEmpt()" "ComOutput()" "ComReady()" 


    ComOutEmpt()

         Determina si el buffer de salida est  vacio

    Sintaxis:

         ComOutEmpt() -> lEmpty

    Descripci¢n:

         Determina si el buffer interno de salida est  vacio.

    Valor de Retorno:

         Un valor l¢gico indicando si est  vacio o no.

    Ejemplo:

         If ComOutEmpt()
           Warning( "Buffer de salida vacio" )
         EndIf

See Also: "ComInEmpt()" 


                                 - Page 217 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    ComOutFlh()

         Inicializa el buffer de salida

    Sintaxis:

         ComOutFlh() -> NIL

    Descripci¢n:

         Vacia e inicializa el buffer de salida. Este proceso lo realiza
         autom ticamente la funci¢n ComInst().

    Valor de Retorno:

         Nada.

    Ejemplo:

         ComOutFlh()

See Also: "ComInFlh()" 


    ComParity()

         Determina la paridad de la comunicaci¢n

    Sintaxis:

         ComParity( nParity, [ nBitsStop ] ) -> aInfo

         nParity   : El tipo de paridad. Definidos en FAST.CH

                      0  ¢  COM_NONE
                      1  ¢  COM_EVEN
                      2  ¢  COM_ODD
                      3  ¢  COM_ZERO
                      4  ¢  COM_ONE

         nBitsStop : El n£mero de bits de stop, 1 ¢ 2. Por defecto 1.

    Descripci¢n:

         ComParity() determina la paridad de la comunicaci¢n.

    Valor de Retorno:

         Un array con la paridad y el n£mero de bits de stop establecidos.

    Ejemplo:

         aInfo := ComParity( COM_NONE )        // sin paridad, 1 bit stop
         ? "Paridad   " + STR( aInfo[ 1 ] )

                                 - Page 218 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         ? "Bits Stop " + STR( aInfo[ 2 ] )

See Also: "ComSpeed()" 


    ComReady()

         Determina si el sistema est  preparado para transmitir

    Sintaxis:

         ComReady() -> lReady

    Descripci¢n:

         Determina si el sistema est  preparado para transmitir. Esto depende
         de que el Gestor de Comunicaciones est‚ activo y que los buffers
         no est‚n llenos.

    Valor de Retorno:

         Un valor l¢gico indicando si el sistema est  preparado.

    Ejemplo:

         If ComReady()
           Warning( "System Ok" )
         EndIf

See Also: "ComCarrier()" 


    ComSpeed()

         Determina la velocidad de la comunicaci¢n

    Sintaxis:

         ComSpeed( nSpeed ) -> nSpeed

         nSpeed : La velocidad de la comunicaci¢n

    Descripci¢n:

         ComSpeed() determina la velocidad de la comunicaci¢n.

    Valor de Retorno:

         La velocidad establecida en el puerto COM.

    Ejemplo:

         ComSpeed()             // 28800
         ComSpeed( 14440 )      // fija la velocidad en 14400


                                 - Page 219 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


See Also: "ComParity()" 


    ComUnInst()

         Desinstala el Sistema de Comunicaciones Serie

    Sintaxis:

         ComUnInst() -> NIL

    Descripci¢n:

         ComUnInst() desinstala el Sistema de Comunicaciones Serie.

         Esta funci¢n debe ser ejecutada siempre antes de abandonar el
         programa para desinstalar el Sistema de Comunicaciones que ha sido
         previamente instalado con ComInst().

    Valor de Retorno:

         Nada.

    Ejemplo:

         ComUnInst()

See Also: "ComInst()" 


    CRC32()

         Retorna un CRC32 polinomial de un bloque como PKZIP

    Sintaxis:

         CRC32( cBlock ) -> cCRC

         cBlock  : El bloque a calcular

    Descripci¢n:

         Calcula un CRC32 bit polinomial de un bloque de caracteres o campo
         memo.

    Valor de Retorno:

         Un string con el CRC32.

    Ejemplo:

         ? CRC32( "Hello" )                   // "edb88320h"
         ? CRC32( MemoRead( "Fast.txt" ) )    // "feda3139h"

See Also: "XCRC16()" 

                                 - Page 220 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'




    Dial()

         Marca un n£mero de tel‚fono con el modem

    Sintaxis:

         Dial( cPort, cNumber [, cDial] ) -> lError

         cPort   : El puerto donde est  el modem.
         cNumber : El n£mero de tel‚fono.
         cDial   : The dialing string.

    Descripci¢n:

         Marca un n£mero de tel‚fono con el modem. No olvide cortar la
         comunicaci¢n con la funci¢n HangUp() al final de cada llamada y
         antes de volver a marcar.

         El puerto por defecto es "COM1" y el string de dial por defecto es
         "ATDP" para llamar por pulsos. Escriba "ATDT" para llamar por tonos.

    Valor de Retorno:

         Si hay alg£n error retorna .F. Si no retorna .T.

    Ejemplo:

         ? "Dialing..."
         Dial( "COM2", "94,4992660" )
         Inkey (0)
         ? "Hangup"
         Hangup( "COM2" )

See Also: "Hangup()" 


    GetBaud()

         Retorna la velocidad de un puerto COM en baudios

    Sintaxis:

         GetBaud( nPort ) -> nBaudRate

         nPort : El n£mero del puerto: 0=COM1, 1=COM2, 2=COM3, 3=COM4

    Descripci¢n:

         Retorna el ratio de baudios de un puerto COM. Por ejemplo, un
         puerto configurado por un driver de rat¢n retornar  1200, para un
         modem 2400, 9600, ...

    Valor de Retorno:

                                 - Page 221 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Un n£mero con el ratio de baudios.

    Ejemplo:

         ? GetBaud( 0 )                        // COM1


    Hangup()

         Cuelga una llamada de tel‚fono

    Sintaxis:

         Hangup( cPort [, cHangup] ) -> lError

         cPort   : El puerto donde est  situado el modem.
         cHangup : El string a enviar al modem.

    Descripci¢n:

         Cuelga una llamada. No olvide colgar al final de cada llamada.
         El puerto por defecto es "COM1" y el string de Hangup es "+++ATH0".

    Valor de Retorno:

         Si hay alg£n error retorna .F. Si no retorna .T.

    Ejemplo:

         ? "Dialing..."
         Dial ( "COM2", "94,4992660", "ATB0DP" )
         Inkey (0)
         ? "Hangup"
         Hangup ( "COM2", "+++ATH0" )

See Also: "Dial()" 


    UARTType()

         Determina el tipo de UART de un puerto serie

    Sintaxis:

         UARTType( nPort ) -> nType

         nPort : El puerto serie a evaluar, 0->COM1, 1->COM2, 2->COM3...

    Descripci¢n:

         Determina la UART existente en un puerto serie retornando un valor
         num‚rico.

    Valor de Retorno:

                                 - Page 222 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Un valor num‚rico indicando:

            0    UART no encontrada en el puerto especificado
            1    8250/8250B
            2    8250A/16450
            3    16550A
            4    16550N

    Ejemplo:

         ? UARTType( 0 )


    XCRC16()

         Retorna un CRC16 polinomial de un bloque como XMODEM/ZMODEM

    Sintaxis:

         XCRC16( nPrevious, cBlock ) -> nCRC16

         nPrevious : El CRC16 previo o 0
         cBlock    : El bloque a calcular

    Descripci¢n:

         Calcula un CRC16 polinomial de un string o campo memo.

    Valor de Retorno:

         Un valor num‚rico con el CRC.

    Ejemplo:

         nCRC := XCRC16( 0,    SPACE( 1000 ) )
         // CRC calculado,
         // ahora otro bloque
         nCRC := XCRC16( nCRC, SPACE( 1000 ) )

See Also: "CRC32()" 














                                 - Page 223 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 2, CD-Audio SB DAC Speaker




    Se abre un nuevo horizonte para Clipper. El poder del sonido desde
 las aplicaciones ya es posible.  Avisar a los usuarios con sonidos para
 errores, advertencias, etc.  Todo lo que su imaginaci¢n pueda idear.
 Entre en el mundo multimedia, con Clipper naturalmente.

    En la versi¢n 2.0 solo se soportaba la Sound Blaster y Sound Blaster Pro.
 Desde entonces he recibido montones de peticiones para extender este
 subsistema al DAC paralelo y el Speaker.

    Ahora rompemos el muro y damos la posibilidad de generar sonidos por el
 DAC paralelo, Speaker, Sound Blaster y Sound Blaster Pro.

    La m xima frecuencia depende de la velocidad del procesador y los drivers
 de memoria cargados en el sistema.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    cdDrive()

         Retorna el nombre de la unidad l¢gica del CD player

    Sintaxis:

         cdDrive() -> cName

    Descripci¢n:

         Retorna un string con el nombre de la unidad del CD player

    Valor de Retorno:

         Un string con la unidad en el formato "X:"

    Ejemplo:

         ? cdDrive()          // "E:"


    cdClose()

         Cierra la unidad de CD-ROM

    Sintaxis:

         cdClose() -> NIL

    Descripci¢n:

         Cierra la unidad de CD-ROM. Si el CD player est  sonando la llamada

                                 - Page 224 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         ser  ignorada.

    Valor de Retorno:

         Nada.

    Ejemplo:

         cdPlay( 1 )    // reproduce la primera canci¢n
         ? "Pulse una tecla para deterner el CD player"
         Inkey( 0 )
         cdStop()
         cdEject()
         Inkey( 0 )
         cdClose()

See Also: "cdEject()" "cdStop()" "cdPlay()" "cdResume()" 


    cdEject()

         Expulsa el CD de la unidad

    Sintaxis:

         cdEject() -> NIL

    Descripci¢n:

         Expulsa el CD de la unidad. Si el CD player est  sonando la llamada
         ser  ignorada.

    Valor de Retorno:

         Nada.

    Ejemplo:

         cdPlay( 1 )    // reproduce la primera canci¢n
         ? "Pulse una tecla para deterner el CD player"
         Inkey( 0 )
         cdStop()
         cdEject()

See Also: "cdClose()" "cdStop()" "cdPlay()" "cdResume()" 


    cdInfo()

         Retorna el contenido de un CD

    Sintaxis:

         cdInfo() -> aSongs


                                 - Page 225 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Descripci¢n:

         Retorna el contenido de CD. Si el CD est  sonando la llamada es
         ignorada.

    Valor de Retorno:

         Un array con la duraci¢n de las canciones del CD.

    Ejemplo:

         aSongs := cdInfo()
         For nInd := 1 To Len( aSongs )
           ? aSongs[ nInd ]
         Next


    cdInstall()

         Determina si un CD player est  instalado

    Sintaxis:

         cdInstall() -> lInstall

    Descripci¢n:

         Retorna un l¢gico indicando si un CD player est  instalado.

    Valor de Retorno:

         Un valor l¢gico.

    Ejemplo:

         if ! cdInstall()
           ? "Oh!! CD player no detectado"
         endif


    cdNext()

         Salta a la canci¢n siguiente

    Sintaxis:

         cdNext() -> NIL

    Descripci¢n:

         Salta a la canci¢n siguiente. Si el CD player no est  sonando la
         llamada es ignorada.

    Valor de Retorno:


                                 - Page 226 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Nada.

    Ejemplo:

         cdPlay( 1 )    // reproduce la primera canci¢n
         cdNext()       // salta a la segunda
         ? "Pulse una tecla para para el CD"
         Inkey( 0 )
         cdStop()

See Also: "cdPlay()" "cdPrevious()" 


    cdPlay()

         Inicia el funcionamiento del CD player

    Sintaxis:

         cdPlay( nSong, [ nSongs ] ) -> NIL

         nSong  : El n£mero de la canci¢n a reproducir
         nSongs : Reproduce el n£mero de canciones indicado o todo el
                  CD hasta el final si se indica 0. Por defecto es 0.

    Descripci¢n:

         Inicia el funcionamiento del CD player. Si el CD player ya est 
         funcionando la llamada es ignorada.

    Valor de Retorno:

         Nada.

    Ejemplo:

         cdPlay( 1, 0 )    // reproduce la primera canci¢n
         ? "Pulse una tecla para parar el CD player"
         Inkey( 0 )
         cdStop()

See Also: "cdClose()" "cdEject()" "cdStop()" "cdResume()" 


    cdPrevious()

         Salta a la canci¢n anterior

    Sintaxis:

         cdPrevious() -> NIL

    Descripci¢n:

         Salta a la canci¢n anterior. Si el CD player no est  sonando la

                                 - Page 227 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         llamada es ignorada.

    Valor de Retorno:

         Nada.

    Ejemplo:

         cdPlay( 2 )    // reproduce la segunda canci¢n
         cdPrevious()   // salta a la primera
         ? "Pulse una tecla para para el CD"
         Inkey( 0 )
         cdStop()

See Also: "cdNext()" "cdPlay()" 


    cdResume()

         Reactiva el CD player despu‚s de una pausa

    Sintaxis:

         cdResume() -> NIL

    Descripci¢n:

         Reactiva el CD player despu‚s de una pausa. Si el CD player no
         est  parado la llamada es ignorada.

    Valor de Retorno:

         Nada.

    Ejemplo:

         cdPlay( 1 )    // reproduce la primera canci¢n
         ? "Pulse una tecla para parar el CD player"
         Inkey( 0 )
         cdStop()
         ? "Pulse una tecla para continuar"
         Inkey( 0 )
         cdResume()

See Also: "cdClose()" "cdEject()" "cdPlay()" "cdStop()" 


    cdStatus()

         Determina el estado de una unidad CD player

    Sintaxis:

         cdStatus() -> aStatus


                                 - Page 228 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Descripci¢n:

         Determina el estado de una unidad CD player.

    Valor de Retorno:

         Un array de 3 elementos indicando los siguientes valores

            aStatus[ 1 ]    .T. si la puerta del CD-ROM est  abierta
            aStatus[ 2 ]    .T. si un CD est  sonando en el CD-ROM
            aStatus[ 3 ]    .T. si un CD en la unidad de CD-ROM

    Ejemplo:

         aInfo := cdStatus()
         ? aInfo[ 1 ]
         ? aInfo[ 2 ]
         ? aInfo[ 3 ]


    cdStop()

         Detiene o hace un pausa en el CD player

    Sintaxis:

         cdStop() -> NIL

    Descripci¢n:

         Detiene o hace una pausa en el CD player. Si el CD player no est 
         funcionando la llamada es ignorada.

    Valor de Retorno:

         Nada.

    Ejemplo:

         cdPlay( 1 )    // reproduce la primera canci¢n
         ? "Pulse una tecla para parar el CD player"
         Inkey( 0 )
         cdStop()

See Also: "cdClose()" "cdEject()" "cdPlay()" "cdResume()" 


    cdTime()

         Retorna informaci¢n sobre la reproducci¢n

    Sintaxis:

         cdTime() -> aTime


                                 - Page 229 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Descripci¢n:

         Retorna informaci¢n sobre la reproducci¢n, la canci¢n que est 
         sonando, minutos, segundos y decimas.

    Valor de Retorno:

         Un array con:

            El n£mero de canci¢n que est  sonando
            Minutos
            Segundos
            Decimas

    Ejemplo:

         aTime := cdTime()
         WHILE Inkey() == 0
           @ 10, 0 SAY "Song Number " + STR( aTime[ 1 ], 2 )
           @ 11, 0 SAY "Time        " + STR( aTime[ 2 ], 2 ) + ":" + ;
                       STR( aTime[ 3 ], 2 )
           aTime := cdTime()
         END


    dacVocPlay()

         Reproduce un fichero VOC por el DAC paralalo

    Sintaxis:

         dacVocPlay( cFile, [nRate], [lKey] ) -> lError

         cFile : El nombre del fichero
         nRate : La frecuencia. El valor por defecto es 12000 Hz.
                 Use este valor para cambiar la frecuencia.
         lKey  : Un l¢gico indicando si la reproducci¢n debe parar si el
                 usuario pulsa una tecla. Por defecto .F. indicando que
                 no se debe parar.

    Descripci¢n:

         Reproduce un fichero con formato VOC por el DAC paralelo

    Valor de Retorno:

         Un valor l¢gico indicando si la funci¢n termin¢ sin errores.

    Ejemplo:

         dacVocPlay( "Luna.Voc", 13224 )

See Also: "dacWavPlay()" 



                                 - Page 230 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    dacWavPlay()

         Reproduce un fichero WAV por el DAC paralalo

    Sintaxis:

         dacWavPlay( cFile, [nRate], [lKey] ) -> lError

         cFile : El nombre del fichero
         nRate : La frecuencia. El valor por defecto es 12000 Hz.
                 Use este valor para cambiar la frecuencia.
         lKey  : Un l¢gico indicando si la reproducci¢n debe parar si el
                 usuario pulsa una tecla. Por defecto .F. indicando que
                 no se debe parar.

    Descripci¢n:

         Reproduce un fichero con formato WAV por el DAC paralelo

    Valor de Retorno:

         Un valor l¢gico indicando si la funci¢n termin¢ sin errores.

    Ejemplo:

         dacWavPlay( "Luna.Wav", 13224 )

See Also: "dacVocPlay()" 


    dacPort()

         Determina el puerto donde est  situado el DAC paralelo

    Sintaxis:

         dacPort( nPort ) -> nOldPort

         nPort : Un n£mero indicando el puerto paralelo. 1=LPT1, 2=LPT2

    Descripci¢n:

         Determina el puerto paralelo donde est  conectado el DAC.
         El puerto por defecto es LPT1.

    Valor de Retorno:

         Un n£mero indicando el puerto actual de conexi¢n para el DAC.

    Ejemplo:

         dacPort( 2 )           // Ahora, todo ir  hacia LPT2


    FMDelay()

                                 - Page 231 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Espera un tiempo especificado

    Sintaxis:

         FMDelay( nTicks ) -> NIL

         nTicks : El n£mero de ticks a esperar. Un segundo tiene 18.2 ticks

    Descripci¢n:

         Espera un tiempo especificado en ticks de reloj.

    Valor de Retorno:

         Nada.

    Ejemplo:

         FMKeyOn( 1, 500, 2 )
         FMDelay( 9 )               // espera 1/2 segundo

See Also: "FMLoadSBI()" "FMKeyOff()" "FMKeyOn()" "FMReset()" "FMSetVoice()" 


    FMLoadSBI()

         Lee un fichero SBI

    Sintaxis:

         FMLoadSBI( cFile ) -> aInfo | NIL

         nFile : El nombre del fichero SBI

    Descripci¢n:

         Lee un fichero SBI( Sound Blaster instrument) y retorna el nombre
         y la informaci¢n del instrumento.

    Valor de Retorno:

         Un array con el nombre y la informaci¢n del instrumento o NIL si
         el fichero no existe.

    Ejemplo:

         aPiano := FMLoadSBI( "piano.sbi" )
         IF aPiano != NIL
           ? aPiano[ 1 ]                   // el nombre del instrumento
           FMSetVoice( 1, aPiano[ 2 ] )    // carga un instrumento
         ENDIF

See Also: "FMDelay()" "FMKeyOff()" "FMKeyOn()" "FMReset()" "FMSetVoice()" 


                                 - Page 232 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    FMKeyOff()

         Apaga una voz

    Sintaxis:

         FMKeyOff( nVoice ) -> NIL

         nVoice : La voz a apagar

    Descripci¢n:

         Apaga una voz de tarjeta Sound Blaster o Adlib. La Adlib tiene
         9 voces desde 1 hasta 9 y la Sound Blaster tiene 16 voces desde 0
         hasta 15.

    Valor de Retorno:

         Nada.

    Ejemplo:

         aPiano := FMLoadSBI( "piano.sbi" )
         FMReset()
         IF aPiano != NIL
           ? aPiano[ 1 ]                   // el nombre del instrumento
           FMSetVoice( 1, aPiano[ 2 ] )    // carga un instrumento
         ENDIF
         FMKeyOn( 1, 502, 3 )
         FMDelay( 9 )
         FMKeyOff( 1 )
         FMReset()

See Also: "FMDelay()" "FMLoadSBI()" "FMKeyOn()" "FMReset()" "FMSetVoice()" 


    FMKeyOn()

         Enciende una voz

    Sintaxis:

         FMKeyOn( nVoice, nFrec, nOctave ) -> NIL

         nVoice  : La voz a encender
         nFrec   : La frecuencia
         nOctave : La octava

    Descripci¢n:

         Enciende una voz de la tarjeta Sound Blaster o Adlib. La Adlib
         tiene 9 voces desde 1 hasta 9 y la Sound Blaster tiene 16 voces
         desde 0 hasta 15. La octava puede ser un valor desde 0 hasta 15.


                                 - Page 233 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Valor de Retorno:

         Nada.

    Ejemplo:

         /* Chromatic scale starting from C# */
         aNotes  := { 363, 385, 408, 432, 458, 485, ;
                      514, 544, 577, 611, 647, 686 }
         FMReset()
         aPiano := FMLoadSBI( "piano.sbi" )
         IF aPiano != NIL
           ? aPiano[ 1 ]
           FMSetVoice( 1, aPiano[ 2 ] )
         ENDIF
         FMKeyOn( 1, 502, 3 )
         FMDelay( 9 )
         FMKeyOff( 1 )
         FMReset()

See Also: "FMDelay()" "FMLoadSBI()" "FMKeyOff()" "FMReset()" "FMSetVoice()" 


    FMReset()

         Inicializa el chip FM

    Sintaxis:

         FMReset() -> NIL

    Descripci¢n:

         Inicializa el chip FM de la Sound Blaster o Adlib.

    Valor de Retorno:

         Nada.

    Ejemplo:

         /* Chromatic scale starting from C# */
         aNotes  := { 363, 385, 408, 432, 458, 485, ;
                      514, 544, 577, 611, 647, 686 }
         FMReset()
         aPiano := FMLoadSBI( "piano.sbi" )
         IF aPiano != NIL
           ? aPiano[ 1 ]
           FMSetVoice( 1, aPiano[ 2 ] )
         ENDIF
         FMKeyOn( 1, 502, 3 )
         FMDelay( 9 )
         FMKeyOff( 1 )
         FMReset()


                                 - Page 234 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


See Also: "FMDelay()" "FMLoadSBI()" "FMKeyOff()" "FMKeyOn()" "FMSetVoice()" 


    FMSetVoice()

         Carga un instrumento en una voz

    Sintaxis:

         FMSetVoice( nVoice, cInfo ) -> NIL

         nVoice : La voz a modificar
         cInfo  : La informaci¢n del nuevo instrumento a cargar

    Descripci¢n:

         Modifica la informaci¢n de una voz con un nuevo instrumento.
         El paramentro nVoice debe ser un valor n£mero indicando la voz
         a cambiar.
         cInfo es un string de 11 bytes que definen al instrumento de la
         siguiente forma:

           Byte 1-2  -> Sound Characteristics (modulator/carrier)
           Byte 3-4  -> Output Level/Scaling (modulator/carrier)
           Byte 5-6  -> Attack and Decay (modulator/carrier)
           Byte 7-8  -> Sustain and Release (modulator/carrier)
           Byte 9-10 -> Wave Select, Distortion (modulator/carrier)
           Byte 11   -> Voice Feedback/Connection

    Valor de Retorno:

         Nada.

    Ejemplo:

         /* Chromatic scale starting from C# */
         aNotes  := { 363, 385, 408, 432, 458, 485, ;
                      514, 544, 577, 611, 647, 686 }
         FMReset()
         aPiano := FMLoadSBI( "piano.sbi" )
         IF aPiano != NIL
           ? aPiano[ 1 ]
           FMSetVoice( 1, aPiano[ 2 ] )
         ENDIF
         FMKeyOn( 1, 502, 3 )
         FMDelay( 9 )
         FMKeyOff( 1 )
         FMReset()

See Also: "FMDelay()" "FMLoadSBI()" "FMKeyOff()" "FMKeyOn()" "FMReset()" 


    MSCDESVer()

         Retorna la versi¢n de MSCDEX

                                 - Page 235 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Sintaxis:

         MSCDEXVer() -> cVersion

    Descripci¢n:

         Retorna un string con la versi¢n de MSCDEX o "00.00" si MSCDEX no
         est  cargado.

    Valor de Retorno:

         Un string con el formato "XX.XX"

    Ejemplo:

         ? MSCDEXVer()      // "02.23"


    sbCDVolL()

         Cambia el nivel de volumen izquierdo del CD. Solo en SB Pro.

    Sintaxis:

         sbCDVolL( [nNewVol] ) -> nVol

         nNewVol : El nuevo volumen. Valores permitidos entre 0 y 15.

    Descripci¢n:

         Retorna el nivel de volumen izquierdo del CD del sistema si ‚ste est 
         presente y opcionalmente fija un nuevo volumen.

    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbCDVolL( 12 )

See Also: "sbCDVolR()" 


    sbCDVolR()

         Cambia el nivel de volumen derecho del CD. Solo en SB Pro.

    Sintaxis:

         sbCDVolR( [nNewVol] ) -> nVol

         nNewVol : El nuevo volumen. Valores permitidos entre 0 y 15.


                                 - Page 236 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Descripci¢n:

         Retorna el nivel de volumen derecho del CD del sistema si ‚ste est 
         presente y opcionalmente fija un nuevo volumen.

    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbCDVolR( 12 )

See Also: "sbCDVolL()" 


    sbFMVolL()

         Cambia el nivel de volumen FM izquierdo

    Sintaxis:

         sbFMVolL( [nNewVol] ) -> nVol

         nNewVol : El nuevo volumen. Valores permitidos entre 0 y 15.

    Descripci¢n:

         Retorna el nivel de volumen de FM en el canal izquierdo de la
         Sound Blaster y opcionalmente cambia dicho volumen.

    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbFMVolL()

See Also: "sbFMVolR()" 


    sbFMVolR()

         Cambia el nivel de volumen FM derecho

    Sintaxis:

         sbFMVolR([ [nNewVol] ) -> nVol

         nNewVol : El nuevo volumen. Valores permitidos entre 0 y 15.

    Descripci¢n:

         Retorna el nivel de volumen de FM en el canal derecho de la

                                 - Page 237 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Sound Blaster y opcionalmente cambia dicho volumen.

    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbFMVolR()

See Also: "sbFMVolL()" 


    sbInit()

         Inicializa la Sound Blaster y determina su presencia

    Sintaxis:

         sbInit() -> lError

    Descripci¢n:

         Inicializa la Sound Blaster y/o Sound Blaster Pro y determina su
         presencia retornando un valor l¢gico.

         Recuerde que antes de llamar a esta funci¢n debe configurar la IRQ
         y la IO Address mediante las funciones sbIO() y sbIRQ(). Preste
         especial antenci¢n a este punto si la IRQ por defecto no es la 7
         la IO address por defecto no es la 220h.

    Valor de Retorno:

         Un valor l¢gico indicando si la Sound Blaster est  disponible en el
         sistema en la IRQ e IO Address especificadas.

    Ejemplo:

         If sbInit()
           ? "Hay una Sound Blaster"
         EndIf

See Also: "sbIO()" "sbIRQ()" 


    sbIO()

         Retorna y/o modifica la IO address de la SB

    Sintaxis:

         sbIO( nNewAddr ) -> nAddress

         nNewAddr : La nueva direcci¢n de configuraci¢n de la Sound Blaster.
                    Recuerde que el valor debe ser introducido en decimal

                                 - Page 238 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


                    y no en hexadecimal.

    Descripci¢n:

         Retorna y/o moficia la IO Address de la Sound Blaster. La IO address
         por defecto es 220h, pero este valor puede ser modificado mediante
         switches situados en la tarjeta.  Compruebe la IO address de su
         Sound Blaster y modifique est  funci¢n para adaptarse a la misma.

    Valor de Retorno:

         Un valor num‚rico indicando la IO address actual.

    Ejemplo:

         ? sbIO()               // Probablemente retorne 220h en decimal

See Also: "sbIRQ()" 


    sbIRQ()

         Retorna y/o modifica la IRQ de la SB

    Sintaxis:

         sbIRQ( nNewIRQ ) -> nIRQ

         nNewIRQ : La nueva IRQ para la configuraci¢n de la Sound Blaster.
                   Recuerde que el valor debe ser introducido en decimal
                   y no en hexadecimal.

    Descripci¢n:

         Retorna y/o moficia la IRQ de la Sound Blaster. La IRQ por defecto
         en la Sound Blaster es IRQ 7h, lo cual significa que asume la
         interrupci¢n 08h+07h = 0fh. Este valor puede ser modificado
         mediante switches situados en la tarjeta.

         Comprueba que IRQ tiene configurada su Sound Blaster y ajuste este
         valor mediante la funci¢n sbIRQ().

    Valor de Retorno:

         Un n£mero indicando la IRQ actual

    Ejemplo:

         ? sbIRQ( 5 )    // la nueva IRQ es la 5

See Also: "sbIO()" 


    sbLineVolL()


                                 - Page 239 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Cambia el nivel de volumen de l¡nea izquiedo

    Sintaxis:

         sbLineVolL( [nNewVol] ) -> nVol

         nNewVol : El nuevo volumen. Valores permitidos entre 0 y 15.

    Descripci¢n:

         Retorna el nivel de volumen establecido en el canal izquierdo de
         la Sound Blaster y opcionalmente cambia dicho volumen.

    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbLineVolL()

See Also: "sbLineVolR()" 


    sbLineVolR()

         Cambia el nivel de volumen de l¡nea derecho

    Sintaxis:

         sbLineVolR( [nNewVol] ) -> nVol

         nNewVol : El nuevo volumen. Valores permitidos entre 0 y 15.

    Descripci¢n:

         Retorna el nivel de volumen establecido en el canal derecho de la
         Sound Blaster y opcionalmente cambia dicho volumen.

    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbLineVolR()

See Also: "sbLineVolL()" 


   sbMastVolL()

         Cambia el nivel de volumen Master izquiedo

    Sintaxis:

                                 - Page 240 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         sbMastVolL( [nNewVol] ) -> nVol

         nNewVol : El nuevo volumen. Valores permitidos entre 0 y 15.

    Descripci¢n:

         Retorna el nivel de volumen Master establecido en el canal izquierdo
         de la Sound Blaster y opcionalmente cambia dicho volumen.

    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbMastVolL()

See Also: "sbMastVolR()" 


    sbMastVolR()

         Cambia el nivel de volumen Master derecho

    Sintaxis:

         sbMastVolR( [nNewVol] ) -> nVol

         nNewVol : El nuevo volumen. Valores permitidos entre 0 y 15.

    Descripci¢n:

         Retorna el nivel de volumen Master establecido en el canal derecho
         de la Sound Blaster y opcionalmente cambia dicho volumen.

    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbMastVolR()

See Also: "sbMastVolL()" 


    sbRecScrL()

         Cambia el nivel de volumen izquierdo de grabaci¢n

    Sintaxis:

         sbRecScrL( [nNewVol] ) -> nVol


                                 - Page 241 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         nNewVol : El nuevo volumen. Valores permitidos entre 0 y 15.

    Descripci¢n:

         Retorna el nivel de volumen izquierdo de grabaci¢n establecido en la
         Sound Blaster y opcionalmente cambia dicho volumen.

    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbRecScrL()

See Also: "sbRecScrR()" 


    sbRecScr()

         Cambia el nivel de volumen derecho de grabaci¢n

    Sintaxis:

         sbRecScrR( [nNewVol] ) -> nVol

         nNewVol : El nuevo volumen. Valores permitidos entre 0 y 15.

    Descripci¢n:

         Retorna el nivel de volumen derecho de grabaci¢n establecido en la
         Sound Blaster y opcionalmente cambia dicho volumen.

    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbRecScrR()

See Also: "sbRecScrL()" 


    sbVocPlay()

         Reproduce un fichero VOC por la Sound Blaster

    Sintaxis:

         sbVocPlay( cFile, [nRate], [lKey] ) -> lError

         cFile : El nombre del fichero
         nRate : La frecuencia. El valor por defecto es 12000 Hz.
                 Use este valor para cambiar la frecuencia.

                                 - Page 242 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         lKey  : Un l¢gico indicando si la reproducci¢n debe parar si el
                 usuario pulsa una tecla. Por defecto .F. indicando que
                 no se debe parar.

    Descripci¢n:

         Reproduce un fichero con formato VOC por la Sound Blaster

    Valor de Retorno:

         Un valor l¢gico indicando si la funci¢n termin¢ sin errores.

    Ejemplo:

         sbVocPlay( "Fast.Voc", 13224 )

See Also: "sbWavPlay()" 


    sbVocVolL()

         Cambia el nivel de volumen VOC izquierdo

    Sintaxis:

         sbVocVolL( [nNewVol] ) -> nVol

    Descripci¢n:

         Retorna el nivel de volumen VOC establecido en el canal izquierdo
         de la Sound Blaster y opcionalmente cambia dicho volumen.

    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbVocVolL()

See Also: "sbVocVolR()" 


    sbVocVolR()

         Cambia el nivel de volumen VOC derecho

    Sintaxis:

         sbVocVolR( [nNewVol] ) -> nVol

    Descripci¢n:

         Retorna el nivel de volumen VOC establecido en el canal derecho
         de la Sound Blaster y opcionalmente cambia dicho volumen.

                                 - Page 243 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Valor de Retorno:

         Un valor num‚rico indicando el nivel de volumen entre 0 y 15.

    Ejemplo:

         ? sbVocVolR()

See Also: "sbVocVolL()" 


    sbWavPlay()

         Reproduce un fichero WAV por la Sound Blaster

    Sintaxis:

         sbWavPlay( cFile, [nRate], [lKey] ) -> lError

         cFile : El nombre del fichero
         nRate : La frecuencia. El valor por defecto es 12000 Hz.
                 Use este valor para cambiar la frecuencia.
         lKey  : Un l¢gico indicando si la reproducci¢n debe parar si el
                 usuario pulsa una tecla. Por defecto .F. indicando que
                 no se debe parar.

    Descripci¢n:

         Reproduce un fichero con formato WAV por la Sound Blaster

    Valor de Retorno:

         Un valor l¢gico indicando si la funci¢n termin¢ sin errores.

    Ejemplo:

         sbWavPlay( "Luna.Wav", 13224 )

See Also: "sbVocPlay()" 


    spkVocPlay()

         Reproduce un fichero VOC por el speaker

    Sintaxis:

         spkVocPlay( cFile, [nRate], [lKey] ) -> lError

         cFile : El nombre del fichero
         nRate : La frecuencia. El valor por defecto es 12000 Hz.
                 Use este valor para cambiar la frecuencia.
         lKey  : Un l¢gico indicando si la reproducci¢n debe parar si el
                 usuario pulsa una tecla. Por defecto .F. indicando que

                                 - Page 244 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


                 no se debe parar.

    Descripci¢n:

         Reproduce un fichero con formato VOC por el speaker

    Valor de Retorno:

         Un valor l¢gico indicando si la funci¢n termin¢ sin errores.

    Ejemplo:

         spkVocPlay( "Handel.voc", 13224 )

See Also: "spkWavPlay()" 


    spkWavPlay()

         Reproduce un fichero WAV por el speaker

    Sintaxis:

         spkWavPlay( cFile, [nRate], [lKey] ) -> lError

         cFile : El nombre del fichero
         nRate : La frecuencia. El valor por defecto es 12000 Hz.
                 Use este valor para cambiar la frecuencia.
         lKey  : Un l¢gico indicando si la reproducci¢n debe parar si el
                 usuario pulsa una tecla. Por defecto .F. indicando que
                 no se debe parar.

    Descripci¢n:

         Reproduce un fichero con formato WAV por el speaker

    Valor de Retorno:

         Un valor l¢gico indicando si la funci¢n termin¢ sin errores.

    Ejemplo:

         spkWavPlay( "Luna.Wav", 13224 )

See Also: "spkVocPlay()" 










                                 - Page 245 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu List: FAST.lib 2, Sistema




   Con estas funciones se intenta dotar a Clipper de m s control sobre
 el ambiente de las aplicaciones. De esta forma, se pueden controlar los
 accesos a los SETS de Clipper, modem, setup, passwords, CMOS, BIOS, memoria
 drivers, ... etc.

 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


    BIOSModel()

         Retorna el modelo de ordenador

    Sintaxis:

         BIOSModel() -> nModel

    Descripci¢n:

         Retorna un n£mero entre 0 y 255, que es el valor decimal de un
         byte indicando el modelo del sistema que reporta la BIOS.
         In un 80386 este valor es normalmente 252, o FCh.
         Existen tablas en la mayor¡a de las biblias de hard del IBM PC
         que indican el significado de los distintos valores.

    Valor de Retorno:

         Un n£mero indicando el modelo de ordenador.

    Ejemplo:

         ? BIOSModel()

See Also: "BIOSRev()" "BIOSSubMod()" 


    BIOSRev()

         Retorna la revisi¢n de la BIOS

    Sintaxis:

         BIOSRev() -> nRevision

    Descripci¢n:

         Retorna un n£mero entre 0 y 255, que es el valor decimal de un
         byte indicando la revisi¢n de la BIOS del sistema.
         La revisi¢n usualmente est  en relaci¢n con la fecha de la BIOS.

    Valor de Retorno:

                                 - Page 246 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Un n£mero indicando la revisi¢n de la BIOS.

    Ejemplo:

         BIOSRev()

See Also: "BIOSModel()" "BIOSSubMod()" 


    BIOSSubMod()

         Retorna el submodelo de ordenador

    Sintaxis:

         BIOSSubMod() -> nSubModel

    Descripci¢n:

         Retorna un n£mero entre 0 y 255, que es el valor decimal de un
         byte indicando el submodelo de ordenador. Este valor normalmente
         es usado por la mayor¡a de los fabricantes de hardware para
         distinguir sus equipos. La mayor¡a de los cl¢nicos usan el mismo
         valor. No es as¡ con BMS, Compaq o Toshiba que usan valores
         exclusivos.

    Valor de Retorno:

         Un n£mero indicando el submodelo de ordenador.

    Ejemplo:

         BIOSSubMod()

See Also: "BIOSModel()" "BIOSRev()" 


    cArgV()

         Retorna un par metro de la l¡nea de comandos

    Sintaxis:

         cArgV( nPos ) -> cParam

         nPos : La posici¢n del par metro en la l¡nea de comandos.
                La posici¢n 0 indica el nombre del programa en ejecuci¢n,
                la 1 el primer par metro, 2 el segundo...

    Descripci¢n:

         Retorna el par metro que ha sido invocado junto con la aplicaci¢n
         y/o el nombre del programa en ejecuci¢n.


                                 - Page 247 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


    Valor de Retorno:

         Un string con el par metro especificado.

    Ejemplo:

         ? cArgV( 0 )           // el nombre del programa
         ? cArgV( 2 )           // el segundo par metro

See Also: "nArgC()" 


    cmosGet()

         Retorna una posici¢n de la CMOS

    Sintaxis:

         cmosGet( nAddress ) -> nValue

         nAddress : Direcci¢n relativa de la CMOS. La tabla de direcciones
                    est  descrita m s abajo.

    Descripci¢n:

         Retorna el valor de una celda de memoria en la CMOS. Esto puede ser
         usado para determinar varios aspectos del setup del sistema.
         Recuerde que la entrada y salida de par metros debe ser especificada
         en decimal, aunque la tabla adjunta est‚ en hexadecimal.

                 00h    Seconds
                 01h    Alarm seconds
                 02h    Minutes
                 03h    Alarm minutes
                 04h    Hours
                 05h    Alarm Hours
                 06h    Day of week
                 07h    Day of month
                 08h    Month
                 09h    Year
                 0Ah    Status register A
                 0Bh    Status register B
                 0Ch    Status register C
                 0Dh    Status register D
                 0Eh    Diagnostic Byte
                 OFh    Shutdown status byte
                 10h    Diskette drive type byte - disk A and B
                 11h    Reserved
                 12h    Fixed disk type byte - disk C and D
                 13h    Reserved
                 14h    Equipment Byte
                 15h    Low base memory byte
                 16h    High base memory byte
                 17h    Low expansion memory byte
                 18h    High expansion memory byte

                                 - Page 248 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


                 19-2Dh Reserved
                 2Eh    Checksum byte 1
                 2Fh    Checksum byte 2
                 30h    Low expansion memory byte
                 31h    High expansion memory byte
                 32h    Date century byte
                 33h    Flags Information byte
                 34-3Fh Reserved

    Valor de Retorno:

         Un n£mero indicando el valor de la celda de la CMOS.

    Ejemplo:

         ? cmosGet( 6 )           // retorna el d¡a de la semana

See Also: "cmosSet()" 


    cmosSet()

         Establece el valor de una celda de la CMOS

    Sintaxis:

         cmosSet( nAddress, nValue ) -> NIL

         nAddress : Direcci¢n relativa de la CMOS. La tabla de direcciones
                    est  descrita m s abajo.
         nValue   : El nuevo valor para la posici¢n indicada.

    Descripci¢n:

         ATENCION!!
         Esta funci¢n accede al sistema a muy bajo nivel. Debe ser usada
         con extremo cuidado y requiere un conocimiento de la arquitectura
         del ordenador.

         Inicializa el valor de una celda de la CMOS. Puede ser muy £til
         para modificar de forma r pida el setup del sistema. Recuerde que
         los valores de entrada y salida deben ser especificados en decimal
         aunque la tabla adjunta est‚ en hexadecimal.

                 00h    Seconds
                 01h    Alarm seconds
                 02h    Minutes
                 03h    Alarm minutes
                 04h    Hours
                 05h    Alarm Hours
                 06h    Day of week
                 07h    Day of month
                 08h    Month
                 09h    Year
                 0Ah    Status register A

                                 - Page 249 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


                 0Bh    Status register B
                 0Ch    Status register C
                 0Dh    Status register D
                 0Eh    Diagnostic Byte
                 OFh    Shutdown status byte
                 10h    Diskette drive type byte - disk A and B
                 11h    Reserved
                 12h    Fixed disk type byte - disk C and D
                 13h    Reserved
                 14h    Equipment Byte
                 15h    Low base memory byte
                 16h    High base memory byte
                 17h    Low expansion memory byte
                 18h    High expansion memory byte
                 19-2Dh Reserved
                 2Eh    Checksum byte 1
                 2Fh    Checksum byte 2
                 30h    Low expansion memory byte
                 31h    High expansion memory byte
                 32h    Date century byte
                 33h    Flags Information byte
                 34-3Fh Reserved

    Valor de Retorno:

         Nada.

    Ejemplo:

         ? cmosSet( 0, 30 )         // Pone los segundos del sistema a 30

See Also: "cmosGet()" 


    CpuType()

         Retorna el tipo de procesador

    Sintaxis:

         CpuType() -> nProcessor

    Descripci¢n:

         Retorna el tipo de CPU que tiene el sistema, siguiendo un proceso
         publicado directamente por Intel. La compatibilidad de esta funci¢n
         con procesadores de otras marcas no est  garantizada.

    Valor de Retorno:

         Un n£mero indicando:

              0 - 8088
              1 - 8086
              2 - 80286

                                 - Page 250 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


              3 - 80386
              4 - 80486
              5 - Pentium
              6 - 6tium when available
              7 - 7tium when available
              8 - 8tium when available
              9 - 9tium when available
             10 - NEC V20
             11 - NEC V30
             12 - 80188
             13 - 80186

    Ejemplo:

         If CpuType () == 5
           ? "Ohh, un pentium"
         EndIf


    Delay()

         Hace un pausa de los milisegundos especificados

    Sintaxis:

         Delay( nMilSeconds ) -> NIL

         nMilSeconds : N£mero de milisegundos a esperar

    Descripci¢n:

         Espera nMilSeconds milisegundos. Esta funci¢n no atiende al teclado
         y solo finaliza cuando el tiempo ha finalizado.

         La precisi¢n es de milisegundos, esto es, 0.001 segundos.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Delay ( 0.5 )          // Delay 0.5 seconds


    Deencrypt()

         Desencripta un string

    Sintaxis:

         Deencrypt( cString, cPassword ) -> cNewString

         cString   : El string a desencriptar
         cPassword : El string usado para desencriptar

                                 - Page 251 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Descripci¢n:

         Desencripta un string con un m‚todo secreto.

    Valor de Retorno:

         Un string desencriptado.

    Ejemplo:

         cValue := Deencrypt ( "Hola mundo", "Esta es mi clave" )

See Also: "Encrypt()" "GetPass()" 


    DoIdle()

         Configura el screensaver interno de FAST.lib

    Sintaxis:

         DoIdle( { bBlock, nTime ) -> NIL

         bBlock : Ser  evaluado por la maquinaria interna
         nTime  : El tiempo a esperar antes de pasar a modo idle

    Descripci¢n:

         Esta funci¢n configura la maquinaria interna para entrar en modo
         idle.

    Valor de Retorno:

         Nada.

    Ejemplo:

         // Este es el viejo screensaver de FAST.lib

         FUNCTION MAIN()
              DoIdle( { || Example() }, 60 )       // 60 seconds
         RETURN NIL

         FUNCTION Example()
            IF VideoMode() == 3           // en modo texto?
              ScreenSave()
            ENDIF
         RETURN NIL

See Also: "DoInterval()" 


    DoInterval()


                                 - Page 252 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Llama a una funci¢n cada cierto tiempo

    Sintaxis:

         DoInterval( bBlock, nTime ) -> NIL

         "Funci¢n" : Ser  invocada por la maquinaria interna
         nTime     : El intervalo de tiempo

    Descripci¢n:

         Evalua un codeblock cada cierto tiempo. El tiempo m¡mimo es 1
         segundo.

    Valor de Retorno:

         Nada.

    Ejemplo:

         FUNCTION MAIN()
              DoInterval( { || Example() }, 1 )
         RETURN NIL

         FUNCTION Example()
            @ 0, 70 SAY Time() COLOR "GR+/B"
         RETURN NIL

See Also: "DoIdle()" 


    DOSShell()

         Inicia un nuevo procesador de comandos

    Sintaxis:

         DOSShell() -> NIL

    Valor de Retorno:

         Nada.

    Ejemplo:

         ? "Escriba EXIT para retornar"
         DOSShell ()


    DPMIVersion()

         Retorna la versi¢n del host DPMI

    Sintaxis:


                                 - Page 253 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         DPMIVersion() -> cVersion

    Descripci¢n:

         Retorna la versi¢n del host DPMI o "00.00" si no hay ning£n
         host DPMI activo.

    Valor de Retorno:

         Un string con la versi¢n del host DPMI.

    Ejemplo:

         If IsDPMI()
           Warning( "DPMI host Version: " + DPMIVersion() )
         EndIf

See Also: "IsDPMI()" 


    Encrypt()

         Encripta un string

    Sintaxis:

         Encrypt( cString, cPassword ) -> cNewString

         cString   : El string a encriptar
         cPassword : El string usado para encriptar

    Descripci¢n:

         Encripta un string con un m‚todo secreto.

    Valor de Retorno:

         El string encriptado.

    Ejemplo:

         cValue := Encrypt( "Hola mundo", "Esta es mi clave" )

See Also: "Deencrypt()" "GetPass()" 


    FastRight()

         Retorna el copyright de FAST.lib

    Sintaxis:

         FastRight() -> cCopyright

    Descripci¢n:

                                 - Page 254 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Retorna el copyright de de FAST.lib como un string.

    Valor de Retorno:

         Un string con el copyright de Fast Library For Clipper.

    Ejemplo:

         FastRight()       //  "(C) 1993 Manu Roibal"

See Also: "FastVersion()" 


    FastVersion()

         Retorna la versi¢n de FAST.lib

    Sintaxis:

         FastVersion() -> cVersion

    Descripci¢n:

         Retorna la versi¢n de FAST.lib como un string.

    Valor de Retorno:

         Un string con la versi¢n de Fast Library For Clipper.

    Ejemplo:

         FastVersion()   //  "FAST.lib For Clipper vX.X"

See Also: "FastRight()" 


    GetEnviron()

         Retorna el ambiente del sistema

    Sintaxis:

         GetEnviron() -> aEnviron

    Descripci¢n:

         Retorna el ambiente del sistema, PATH, SET's...

    Valor de Retorno:

         Un array con el ambiente del sistema.

    Ejemplo:


                                 - Page 255 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         aArray := GetEnviron()
         For nInd := 1 To Len( aArray )     // COMSPEC=C:\DOS\COMMAND.COM
           ? aArray[ nInd ]                 // PATH=C:\DOS;D:\CLIPPER5\BIN
         Next                               // PROMPT=$P$G
                                            // ...


    GetPass()

         Pide una password

    Sintaxis:

         GetPass( nRow, nCol, cMessage, nLen ) -> cPass

         nRow     : La l¡nea de la ventana
         nCol     : La columna de la ventana
         cMessage : El mensaje para pedir la password
         nLen     : El n£mero de caracteres m ximo de la password

    Descripci¢n:

         Pide una password de m ximo nLen caracteres en la posici¢n
         especificada.

    Valor de Retorno:

         La password o "" si se pulsa Esc.

    Ejemplo:

         cPass := GetPass ( 12, 20, "Introduzca clave de acceso", 15 )

See Also: "Encrypt()" "Deencrypt()" 


    iDisable()

         Inhibe las interrupciones mascarables

    Sintaxis:

         iDisable() -> NIL

    Descripci¢n:

         Inhibe las interrupciones mascarables y causa que el sistema de
         VMM de Clipper no use los tiempos muertos para continuar su
         trabajo.

         Esto es muy £til cuando el tiempo de respuesta de un proceso es
         crucial y no se desea que el VMM est‚ funcionando durante los
         tiempos muertos.

         Recuerde que ninguna interrupci¢n podr  ser usada hasta que se

                                 - Page 256 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         llame a iEnable().

    Valor de Retorno:

         Nada.

    Ejemplo:

         iDisable()
         For nInd := 1 To 100
           NullFunc()               // En este proceso el VMM est  parado
         Next
         iEnable()

See Also: "iEnable()" 


    iEnable()

         Permite las interrupciones mascarables

    Sintaxis:

         iEnable() -> NIL

    Descripci¢n:

         Permite las interrupciones mascarables.

         Debe ser llamada despues de iDisable() cuando se desea permitir
         nuevamente las interrupciones.

    Valor de Retorno:

         Nada.

    Ejemplo:

         iDisable()
         For nInd := 1 To 100
           NullFunc()               // en este proceso el VMM est  parado
         Next
         iEnable()

See Also: "iDisable()" 


    Inb()

         Lee un byte de un puerto hardware

    Sintaxis:

         Inb( nPort ) -> nValue


                                 - Page 257 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         nPort : n£mero de puerto

    Descripci¢n:

         ATENCION!!
         Esta funci¢n accede al sistema muy bajo nivel. Deber¡a ser usada
         con extremo cuidado y requiere un conocimiento profundo de la
         arquitectura del ordenador.

    Valor de Retorno:

         Un n£mero con el byte recibido del puerto.

    Ejemplo:

         nValue := Inb ( 255 )  // Recibe un valor del puerto FF

See Also: "Inw()" "Outb()" "Outw()" 


    IniLoad()

         Lee un fichero de configuraci¢n .INI

    Sintaxis:

         IniLoad( cFile, cAppl ) -> aIniFile

         cFile : Fichero a leer
         cAppl : Nombre de la aplicaci¢n

    Descripci¢n:

         Lee un fichero de configuraci¢n y procesa su contenido.
         Es la primera operaci¢n que debe usarse con las funciones sobre
         ficheros .INI

    Valor de Retorno:

         Retorna un array con la informaci¢n del fichero .INI

    Ejemplo:

         aIniFile := IniLoad( "Fast.Ini", "MARKET" )

See Also: "IniSearch()" "IniWrite()" "IniSave()" 


    IniSearch()

         Busca un item en un fichero de configuraci¢n .INI

    Sintaxis:

         IniSearch( aIniFile, cItem, cDefault ) -> cValue

                                 - Page 258 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         aIniFile : Un array con la informaci¢n del fichero .INI
         cItem    : El item a buscar
         cDefault : Valor por defecto si el item no es encontrado

    Descripci¢n:

         Retorna el valor del item en el fichero de configuraci¢n o cDefault
         si el item no es encontrado.

         cItem debe estar en may£sculas.

    Valor de Retorno:

         El valor de cItem o el valor por defecto.

    Ejemplo:

         cValue := IniSearch ( aIniFile, "CPUTYPE", "386sx" )

See Also: "IniWrite()" "IniSave()" "IniLoad()" 


    IniSave()

         Salva un item en el ficheor de configuraci¢n .INI

    Sintaxis:

         IniSave( aIniFile, cItem, cValue ) -> NIL

         aIniFile : Un array con la informaci¢n del fichero .INI
         cItem    : Item a modificar
         cValue   : Nuevo valor

    Descripci¢n:

         Salva el valor de un item en el fichero de configuraci¢n pero
         no lo vuelca a disco hasta que que se realice una llamada a
         IniWrite().

    Valor de Retorno:

         Nada.

    Ejemplo:

         IniSave( aIniFile, "CPUTYPE", "386 DX2 25 Mhz" )

See Also: "IniSearch()" "IniWrite()" "IniLoad()" 


    IniWrite()

         Escribe en el disco el fichero de configuraci¢n .INI

                                 - Page 259 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Sintaxis:

         IniWrite( aIniFile, cFile, cAppl ) -> NIL

         aIniFile : Un array con la informaci¢n del .INI
         cFile    : Fichero a crear
         cAppl    : Nombre de la aplicaci¢n

    Descripci¢n:

         Crea un fichero con la informaci¢n de configuraci¢n especificada.
         El nombre de la aplicaci¢n ser  situado en la primera l¡nea del
         fichero.

    Valor de Retorno:

         Nada.

    Ejemplo:

         IniWrite ( aIniFile, "Fast.Ini", "MARKET" )

See Also: "IniSearch()" "IniSave()" "IniLoad()" 


    Inw()

         Lee un word de un puerto hardware

    Sintaxis:

         Inb( nPort ) -> nValue

         nPort : n£mero de puerto

    Descripci¢n:

         ATENCION!!
         Esta funci¢n accede al sistema muy bajo nivel. Deber¡a ser usada
         con extremo cuidado y requiere un conocimiento profundo de la
         arquitectura del ordenador.

    Valor de Retorno:

         Un n£mero con el word recibido del puerto

    Ejemplo:

         nValue := Inb ( 255 )  // Recibe un alor del puerto FF

See Also: "Inb()" "Outb()" "Outw()" 


    IsAnsi()

                                 - Page 260 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Determina si Ansi.sys est  cargado

    Sintaxis:

         IsAnsi() -> lLoaded

    Descripci¢n:

         Determina si Ansi.sys est  cargado

    Valor de Retorno:

         Un l¢gico indicando si ha sido cargado.

    Ejemplo:

         If IsAnsi()
           Warning( "Ansi.sys ha sido cargado" )
         EndIf

See Also: "IsKeyb()" "IsNlsFunc()" "IsShare()" 


    IsCopro()

         Determina si un coprocesador matem tico est  presente

    Sintaxis:

         IsCopro() -> lExist

    Descripci¢n:

         Determina si un coprocesador matem tico o emulador est  presente

    Valor de Retorno:

         Un l¢gico indicando si est  presente.

    Ejemplo:

         If IsCopro()
           Warning( "Hay coprocesador" )
         EndIf

See Also: "IsModem()" 


    IsDPMI()

         Determina si un host DPMI est  presente

    Sintaxis:


                                 - Page 261 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         IsDPMI() -> lLoaded

    Descripci¢n:

         Determina si un host DOS Protected Mode Interface (DPMI) est 
         presente.

    Valor de Retorno:

         Un l¢gico indicando si est  presente.

    Ejemplo:

         If IsDPMI()
           Warning( "Esta funcionando en PM o V86" )
         EndIf

See Also: "DPMIVersion()" 


    IsKeyb()

         Determina si Keyb ha sido cargado

    Sintaxis:

         IsKeyb() -> lLoaded

    Descripci¢n:

         Determina si Keyb.sys ha sido cargado

    Valor de Retorno:

         Un l¢gico indicando si ha sido cargado.

    Ejemplo:

         If IsKeyb()
           Warning( "Keyb.sys ha sido cargado" )
         EndIf

See Also: "IsAnsi()" "IsNlsFunc()" "IsShare()" 


    IsModem()

         Determina si hay modem interno

    Sintaxis:

         IsModem() -> lExist

    Descripci¢n:


                                 - Page 262 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Determina si hay un modem interno en el sistema.

    Valor de Retorno:

         Un l¢gico indicando si hay un modem interno.

    Ejemplo:

         If IsModem()
           Warning ( "Tiene modem interno" )
         EndIf

See Also: "IsCopro()" 


    IsMSDOS()

         Determina si el sistema operativo es MSDOS o DRDOS

    Sintaxis:

         IsMSDOS() -> lIsMSDOS

    Descripci¢n:

         Determina si el sistema operativo (SO) es un Microsoft DOS (MSDOS)
         o un Digital Research DOS (DRDOS).

    Valor de Retorno:

         .F. para DRDOS y .T. para MSDOS (o cualquier otro).

    Ejemplo:

         If IsMSDOS()
           Warning ( "Muy bien Bill..." )
         EndIf

See Also: "IsQEMM()" 


    IsNlsFunc()

         Determina si NlsFunc ha sido cargado

    Sintaxis:

         IsNlsFunc() -> lLoaded

    Descripci¢n:

         Determina si NlsFunc ha sido cargado.

    Valor de Retorno:


                                 - Page 263 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Un l¢gico indicando si est  cargado o no.

    Ejemplo:

         If IsNlsFunc()
           Warning ( "NlsFunc est  cargado" )
         EndIf

See Also: "IsAnsi()" "IsKeyb()" "IsShare()" 


    IsQEMM()

         Determina si QEMM386.SYS o QRAM.SYS han sido cargados

    Sintaxis:

         IsQEMM() -> lLoaded

    Descripci¢n:

         Determina si QEMM386.SYS o QRAM.SYS han sido cargados.

    Valor de Retorno:

         Un l¢gico indicando si est  cargados o no.

    Ejemplo:

         If IsQEMM()
           Warning ( "QEMM386 ha sido cargado" )
         EndIf

See Also: "IsXMS()" 


    IsShare()

         Determina si Share ha sido cargado

    Sintaxis:

         IsShare() -> lLoaded

    Descripci¢n:

         Determina si Share ha sido cargado.

    Valor de Retorno:

         Un l¢gico indicando si est  cargado o no.

    Ejemplo:

         If IsShare()

                                 - Page 264 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


           Warning ( "Share ha sido cargado" )
         EndIf

See Also: "IsAnsi()" "IsKeyb()" "IsNlsFunc()" 


    IsXMS()

         Determina si un XMS driver ha sido cargado

    Sintaxis:

         IsXMS() -> lLoaded

    Descripci¢n:

         Determina si un XMS driver ha sido cargado.

    Valor de Retorno:

         Un l¢gico indicnado si est  cargado o no.

    Ejemplo:

         If IsXMS()
           Warning ( "XMS driver presente" )
         EndIf

See Also: "IsQEMM()" 


    nArgC()

         Retorna el n£mero de par metros de la l¡nea de comandos

    Sintaxis:

         nArgC() -> nNumber

    Descripci¢n:

         Retorna el n£mero de par metros pasados a la aplicaci¢n a¤adiendo
         uno (el nombre del programa que se est  ejecutando tambi‚n se
         incluye como un par metro).

    Valor de Retorno:

         El n£mero de par metros m s uno.

    Ejemplo:

         For nInd := 0 To nArgC() - 1
           ? cArgV( nInd )
         Next


                                 - Page 265 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


See Also: "cArgV()" 


    NullFunc()

         Una funci¢n que no hace nada

    Sintaxis:

         NullFunc() -> NIL

    Descripci¢n:

         Esta funci¢n no hace nada. Puede ser £til en algunos casos donde
         es necesario poner una funci¢n, por ejemplo, en los codeblocks.

    Valor de Retorno:

         Nada.

    Ejemplo:

         aEval ( aArray, { || NullFunc () } )


    NumParallel()

         Retorna el n£mero de puertos paralelos

    Sintaxis:

         NumParallel() -> nPorts

    Descripci¢n:

         Retorna el n£mero de puertos paralelos del sistema.

    Valor de Retorno:

         Un n£mero que indica los puertos.

    Ejemplo:

         Warning( "Tiene " + Str ( NumParallel() ) + " puertos paralelos" )

See Also: "NumSerial()" 


    NumSerial()

         Retorna el n£mero de puertos serie

    Sintaxis:

         NumSerial() -> nPorts

                                 - Page 266 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Descripci¢n:

         Retorna el n£mero de puertos serie del sistema.

    Valor de Retorno:

         Un n£mero que indica los puertos.

    Ejemplo:

         Warning( "Tiene " + Str ( NumSerial() ) + " puertos serie" )

See Also: "NumParallel()" 


    Outb()

         Escribe un byte en un puerto hardware

    Sintaxis:

         Outb( nPort, nValue ) -> NIL

         nPort  : N£mero de puerto
         nValue : Byte a escribir

    Descripci¢n:

         ATENCION!!
         Esta funci¢n accede al sistema muy bajo nivel. Deber¡a ser usada
         con extremo cuidado y requiere un conocimiento profundo de la
         arquitectura del ordenador.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Outb ( 255, 3 )

See Also: "Inw()" "Inw()" "Outw()" 


    Outw()

         Escribe un word en un puerto hardware

    Sintaxis:

         Outw( nPort, nValue ) -> NIL

         nPort  : N£mero de puerto
         nValue : Word a enviar

                                 - Page 267 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



    Descripci¢n:

         ATENCION!!
         Esta funci¢n accede al sistema muy bajo nivel. Deber¡a ser usada
         con extremo cuidado y requiere un conocimiento profundo de la

    Valor de Retorno:

         Nada.

    Ejemplo:

         Outw ( 255, 32921 )

See Also: "Inw()" "Inw()" "Outb()" 


    Peekb()

         Retorna un byte de una posici¢n de memoria

    Sintaxis:

         Peekb( nSegment, nOffset ) -> nByte

         nSegment : Memory Segment
         nOffset  : Memory Offset

    Descripci¢n:

         ATENCION!!
         Esta funci¢n accede al sistema muy bajo nivel. Deber¡a ser usada
         con extremo cuidado y requiere un conocimiento profundo de la

    Valor de Retorno:

         El valor del byte situado en la posici¢n indicada.

    Ejemplo:

         Peekb ( 64, 0 )                // Returns a byte at 0040:0000h

See Also: "Peekw()" "Pokeb()" "Pokew()" 


    Peekw()

         Retorna un word de una posici¢n de memoria

    Sintaxis:

         Peekw( nSegment, nOffset ) -> nWord

         nSegment : Memory Segment

                                 - Page 268 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         nOffset  : Memory Offset

    Descripci¢n:

         ATENCION!!
         Esta funci¢n accede al sistema muy bajo nivel. Deber¡a ser usada
         con extremo cuidado y requiere un conocimiento profundo de la

    Valor de Retorno:

         El valor del word situado en la posici¢n indicada.

    Ejemplo:

         Peekw ( 64, 0 )        // Return the word at 0040:0000h

See Also: "Peekb()" "Pokeb()" "Pokew()" 


    Pokeb()

         Establece el valor de un byte en una posici¢n de memoria

    Sintaxis:

         Pokeb( nSegment, nOffset, nByte ) -> NIL

         nSegment : Memory Segment
         nOffset  : Memory Offset
         nByte    : Byte a almacenar

    Descripci¢n:

         ATENCION!!
         Esta funci¢n accede al sistema muy bajo nivel. Deber¡a ser usada
         con extremo cuidado y requiere un conocimiento profundo de la

    Valor de Retorno:

         Nada.

    Ejemplo:

         Pokeb ( 64, 0, 16 )                    // 0040:0000h = 0Fh

See Also: "Peekb()" "Peekw()" "Pokew()" 


    Pokew()

         Establece el valor de un byte en una posici¢n de memoria

    Sintaxis:

         Pokew( nSegment, nOffset, nWord ) -> NIL

                                 - Page 269 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         nSegment : Memory Segment
         nOffset  : Memory Offset
         nWord    : Word a almacenar

    Descripci¢n:

         ATENCION!!
         Esta funci¢n accede al sistema muy bajo nivel. Deber¡a ser usada
         con extremo cuidado y requiere un conocimiento profundo de la

    Valor de Retorno:

         Nada.

    Ejemplo:

         Pokew ( 64, 0, 65535 )         //  0040:0000h = FFFFh

See Also: "Peekb()" "Peekw()" "Pokeb()" 


    Reboot()

         Reinicializa el sistema

    Sintaxis:

         Reboot() -> NIL

    Descripci¢n:

         Reinicializa el sistema como Ctrl-Alt-Del, esto es, inicializa
         un boot caliente sin comprobar la memoria.

    Valor de Retorno:

         Nada.

    Ejemplo:

         Reboot()


    RestSets()

         Restaura los SETS de Clipper desde un array

    Sintaxis:

         RestSets( aArray ) -> NIL

         aArray : Un array con los SETS

    Descripci¢n:

                                 - Page 270 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Restaura los SETS de Clipper desde un array con los SETS
         previamente salvados.

    Valor de Retorno:

         Nada.

    Ejemplo:

         RestSets( aArray )

See Also: "SaveSets()" 


    SaveSets()

         Salva los SETS de Clipper en un array

    Sintaxis:

         SaveSets() -> aArray

    Descripci¢n:

         Salva los SETS de Clipper en un array.

    Valor de Retorno:

         Un array con los SETS de Clipper.

    Ejemplo:

         Local aArray := SaveSets()

See Also: "RestSets()" 


    SetDate()

         Cambia la fecha del sistema

    Sintaxis:

         SetDate( dNewDate ) -> lError

         dNewDate : Una tipo DATE de Clipper con la nueva fecha

    Descripci¢n:

         Cambia la fecha del sistema.
         La operaci¢n contraria, esto es, tomar la fecha del sistema puede
         hacerse con la funci¢n standard date().

    Valor de Retorno:

                                 - Page 271 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



         Retorna .T. si la fecha es v lida y .F. si no lo es.

    Ejemplo:

         If ! SetDate ( CtoD ( "99/99/99" ) )
           Warning ( "Fecha incorrecta" )
         EndIf

See Also: "SetTime()" 


    SetTime()

         Cambia la hora del sistema

    Sintaxis:

         SetTime( cNewTime ) -> lError

         cNewTime : Un string con la nueva hora

    Descripci¢n:

         Cambia la hora del sistema con la hora especificada en este formato:
         HH:MM:SS.
         La operaci¢n contraria, esto es, tomar la hora del sistema puede
         hacerse con la funci¢n standard time().

    Valor de Retorno:

         Retorna .T. si la hora es v lida y .F. si no lo es.

    Ejemplo:

         SetTime ( "17:05:43" )
         If ! SetTime ( "78:99:90" )
           Warning ( "Hora incorrecta" )
         EndIf

See Also: "SetDate()" 


    SetVerify()

         Cambia/Determina el flag verify del DOS

    Sintaxis:

         SetVerify( [lNewValue] ) -> lOldValue

         lNewValue : Un l¢gico indicando el nuevo valor del flag verify

    Descripci¢n:


                                 - Page 272 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


         Cambia y determina el valor del flag interno verify del DOS.

    Valor de Retorno:

         Retorna .T. si el flag est  ON y .F. si no lo est .

    Ejemplo:

         BoxWarning ( "Verify flag est  " + If( SetVerify(), "On", "Off" ) )


    SystemIdle()

         Hace que la aplicaci¢n coopere en entornos multitarea

    Sintaxis:

         SystemIdle( [lMode] ) -> lOldMode

         lMode : El modo de operar. .T. instalar el sistema y .F. desistalar

    Descripci¢n:

         Hace que la aplicaci¢n Clipper en ejecuci¢n coopere cediendo tiempos
         muertos a otras aplicaciones en entornos multitarea. Es sensible a
         cualquier entorno que utilize cambios mediante int28h como MS-DOS,
         Windows.

    Valor de Retorno:

         El modo de funcionamiento.

    Ejemplo:

         SystemIdle( .T. )      // ceder  sus tiempos muertos a otras
                                // aplicaciones



















                                 - Page 273 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu Choice: Cr‚ditos, Copyright


    Copyright

         ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
         ³                                                         ³
         ³              Fast Library For Clipper 4.00              ³
         ³                                                         ³
         ³                 (C) 1992-95 Manu Roibal                 ³
         ³                                                         ³
         ³ Mejor herramienta XBASE, Abril 1994. REFERENCE CLIPPER  ³
         ³                                                         ³
         ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


    Todo el c¢digo inclu¡do en Fast Library For Clipper, la
 documentaci¢n, programas de ejemplo y esta Norton Guide son propiedad
 de Manu Roibal.

    Est  totalmente prohibido vender o distribuir FAST.lib por
 cualquier persona f¡sica, corporaci¢n o cualquier otra entidad sin el
 permiso expreso del autor. Est  igualmente prohibido usar FAST.lib
 para crear aplicaciones comerciales o no comerciales con una versi¢n
 de evaluaci¢n o no registrada.


    FAST.lib, (C) 1992-95 Manu Roibal, FAST.Software
    FastWare solutions.

    Todas las marcas registradas referenciadas en este documento son
 propiedad de sus respectivos due¤os.

See Also: "Notas T‚cnicas" "Agradecimientos" 





















                                 - Page 274 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu Choice: Cr‚ditos, Agradecimiento


    Agradecimientos


   Mucha gente ha colaborado directa o indirectamente para crear esta
 biblioteca. Intentando no olvidarme de nadie (lo siento!) voy a intentar
 agradecer a algunas personas su ilimitada paciencia.


       - Miren Itxaso Pe¤a de Bracamonte

         Ella creo el nombre de esta biblioteca y gracias a ella el c¢digo
         de Fast Library no ha terminado en la papelera cuando las leyes
         de Murphy comenzaban a surtir efecto.

       - Oscar Fern ndez, Serpent BBS

         Por su confianza en mi cuando le propuse crear un  rea de Ficheros
         y Mensajes exclusivos para Fast en Serpent BBS. Gracias a ella
         la comunicaci¢n entre el autor y los beta testers ha sido fluida.

       - Jose Miguel Rodr¡guez. Sysop Virtual Software

         Por su soporte en esta y anteriores versiones. Muchas de las
         funciones de Fast est n basadas en ideas sacadas de Virtual
         Software, el paraiso del programador xBase.

       - Miren Itxaso Pe¤a, Philippe Mingo, Jorge Tom‚, Juan Campos,
         Francesc Valverde, Oscar Fern ndez, Esteban Roibal, Gorka Genaga y
         Luca Della Sala

         Ellos tradujeron los mensajes del c¢digo de Fast Library en
         varios lenguajes. A todos ellos, gracias.

       - Rory Wright y Dan Applewhite

         Ultimos cambios en las Norton guides y programas de ejemplo para
         preparar la biblioteca para su distribuci¢n internacional.

       - Bert Kerkhof & Josu Ugalde

         Por sus grandes sugerencias y toda su ayuda. Reportan un mont¢n
         de bugs en las versiones beta. Han colaborado enormemente en la
         adaptaci¢n final de la documentaci¢n en ingl‚s. Gracias.

       - Nacor Manuel Blanco

         Por su gran ayuda con los m‚todos Huffman de compresi¢n y
         descompresi¢n.

See Also: "Notas T‚cnicas" "Copyright" 


                                 - Page 275 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu Choice: Cr‚ditos, Notas T‚cnicas


    Notas T‚cnicas

    Fast Library For Clipper, en anteriores versiones estaba escrita
 al 100% con c¢digo CA-Clipper 5.x. En la versi¢n actual, una gran porci¢n
 de este c¢digo est  escrito en C; por ejemplo, el rat¢n, comunicaciones,
 gr ficos, video, Sound Blaster, timer, CMOS, y otras funciones que no
 pueden ser implementadas en puro c¢digo Clipper o no ser¡an suficientemente
 r pidas. Las bibliotecas CA-Clipper standard no soportan llamadas directas
 a interrupciones o accesos directos a memoria y muchas funciones en FAST.lib
 dependen de ello.

    FAST.lib no usa variables public ni private, haciendo de esta forma
 que el overhead de memoria en la tabla de s¡mbolos sea m¡nimo y evitando
 posibles referencias a nombres de variables internas.

    La biblioteca ha sido hecha m s granular que en anteriores versiones
 dado que las llamadas a las funciones de FAST.lib causar n un m¡nimo
 c¢digo de librer¡a en sus programas.

    No se han usado macros en el c¢digo de FAST.lib.

    Las funciones de FAST.lib que internamente llaman a otras funciones
 usan code blocks para pasarse informaci¢n de unas a otras. Todos los
 argumentos usandos cuando se producen llamadas a funciones de FAST.lib
 por parte del usuario son de tipo numeric, character, logical, y array.

    El c¢digo usado en los ejemplos de documentaci¢n y en los ejemplos de
 las Norton Guide usan Notaci¢n H£ngara por su claridad y consistencia
 con la mayor parte de la documentaci¢n habida sobre CA-Clipper.

See Also: "Copyright" "Agradecimientos" 





















                                 - Page 276 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu Choice: Cr‚ditos, API para soporte de lenguajes


  Notas sobre el soporte de lenguage

    Fast Library For Clipper soporta una amplia variedad de lenguajes
 para los mensajes de texto que son usados en las cajas de di logo.
 El Ingl‚s es usado por defecto. El lenguaje deseado puede ser seleccionado
 simplemente llamando a una de las siguientes funciones:

 M¢dulos de lenguaje disponibles:

    SetAsturian()       SetBasque()        SetCatalan()
    SetEnglish()        SetFinnish()       SetFrench()
    SetGalician()       SetGerman()        SetItalian()
    SetLusitanian()     SetSpanish()       SetSwedish()

 Ahora, usted puede modificar estos ficheros

    LENGAST.PRG           LENGBAS.PRG        LENGCAT.PRG
    LENGENG.PRG           LENGFIN.PRG        LENGFRE.PRG
    LENGGAL.PRG           LENGGER.PRG        LENGITA.PRG
    LENGLUS.PRG           LENGSPA.PRG        LENGSWE.PRG

 e incluirlos en su fichero de script para cambiar los mensajes internos
 de la biblioteca. Los mensajes internos ser n cambios por los nuevos
 mensajes indicados en estos ficheros.




























                                 - Page 277 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu Choice: Cr‚ditos, Notas del modo protegido


  Notas sobre el modo protegido

    FAST.lib es compatible con todos los linker m s populares actualmente
 en el mercado. Blinker 1.x, Blinker 2.x, Blinker 3.x (real, protected,
 y dual mode), Blinker 3.1x, CA-ExoSpace, RTLink x.x, WarpLink x.x y
 CauseWay x.x son soportados.

    Dependiendo de que linker est‚ usando, simplemente deber  a¤adir la
 biblioteca correspondiente al mismo.



    Para lincar con Blinker 3.x (real, protected, y dual mode) debe
 especificar el fichero apibli.lib en su script file o l¡nea de comandos:

    BLINKER FI my_prog LIB fast, apibli

       o

    BLINKER FI my_prog LIB fast, apibli SEA blxclp52 BLI EXE EXT





    Para lincar con Blinker 1.x, Blinker 2.x, RTLink x.x, o
 WarpLink x.x debe incluir el fichero apistd.lib en su script file o
  l¡nea de comandos:

    BLINKER FI my_prog LIB fast, apistd

       o

    RTLINK FI my_prog LIB fast, apistd

       o

    WARPLINK FI my_prog LIB fast, apistd




    Para lincar con CA-ExoSpace debe usar una l¡nea de comandos (o un
 equivalente script file):

    EXOSPACE FI my_prog LIB fast EXO PAC int10, Mouse






                                 - Page 278 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu Choice: Cr‚ditos, Nuevo en esta versi¢n


  Nuevo en esta version


     From 3.00

        þ Sistema de men£ mejorado
        þ Soporte para Modo Gr fico VGA reescrito, incluyendo las
          Funciones para pixels, lines, elipses, c¡rculos, gr ficos,
          histogramas, tartas, etc.
        þ Nuevo Soporte Multi-Linker (CA-ExoSpace; Blinker 1.x, 2.x, 3.0;
          RTLink x.x; y WarpLink x.x)
        þ Nuevo soporte para c¢digo C optimizado
        þ Funci¢n Reboot() cambiada para soportar boot frio y caliente
        þ CpuType() reescrita
        þ Corregidos algunos bugs en el soporte de Italiano
        þ Nueva funci¢n ChooseColor()
        þ Corregido un bug en Like()
        þ Corregido un bug en Serpent()
        þ Encrypt() y DeEncrypt() cambiadas para soportar m£ltiples
          encriptaciones mediante el uso de claves
        þ Nuevas funciones IsDPMI() y DPMIVersion()
        þ Corregido un bug en IsWin3()
        þ Nueva funci¢n WinVersion()
        þ Nuevas funciones WinOpenClip(), WinCloseClip(), WinSetClip(),
          WinGetClip(), WinClipSize(), y WinDelClip() para manejar el
          Clipboard de Windows 3.x desde Clipper
        þ Nuevas funciones DrawBar() y BackGraph() han sido a¤adidas al
          API de gr ficos
        þ Corregido un bug en SetTime()
        þ Nueva funci¢n IsPirate() creada para proteger los programas
          Clipper de usos no autorizados. Los programas solo podr n ser
          ejecutados en una m quina teniendo un configuraci¢n espec¡fica
        þ Nueva funci¢n SetVerify()
        þ Nueva funci¢n SetGray()
        þ MaxFiles() ha cambiado de nombre a FreeHandles()
        þ Nueva funci¢n GetEnviron()
        þ Nueva funci¢n SToD()
        þ rSoftCur() ha sido cambiado para simular un puntero de rat¢n
          gr fico en modo texto; rColors() ya no es necesario
        þ M s velocidad a ChooseColor()
        þ Nuevo par metro en BoxQuery() y BoxWarning()


     From 3.11

        þ Corregido un bug en el CD Audio Support funcionando en modo
          protegido
        þ Algunas funciones internas han sido reescritas para funcionar
          m s r pido


     From 3.12

                                 - Page 279 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



        þ Corregido un bug en RestArray() con arrays multidimensionales
        þ Editor de textos adaptado a MaxRow() y MaxCol()
        þ Corregido un bug en IsPrint() cuando funciona en modo protegido
        þ Una nueva galer¡a gr fica 3D
          Puede mostrar gr ficos 3D, 3D top/down piramidales,
          3D cil¡ndricos, 3D l¡neas, 3D tarta, 3D elipse...
        þ Nueva funci¢n Int2Roman() para convertir enteros a notaci¢n
          romana
        þ Corregido un bug en MSCDEXVer()
        þ Corregido un bug en DiskSerNum() en modo protegido
        þ Nuevas funciones ASCIIToEBCDIC() y EBCDICToASCII()
        þ Corregido un bug en FSearch()
        þ Corregido un peque¤o bug en el l¡mite superior de GraphBar()
          cuando el array contiene valores con decimales
        þ Nueva funci¢n Caos()
        þ Nuevo par metro Color en Puzzle()
        þ Corregido un bug en el CD AUDIO initiation code
        þ Corregido un bug en dToDMY()
        þ Nueva funci¢n dToMDY()
        þ Calendar() adaptado a Sunday, Monday, ... cuando el lenguaje
          seleccionado es Ingl‚s
        þ Nuevas funciones BigLetter() y BigString()
        þ Nuevas funciones SmallLetter() y SmallString()
        þ Funci¢n FastMemo() cambiada
        þ Nueva funci¢n SetHardCopy()
        þ NewMenu() tiene un nuevo par metro para permitir crear menues
          con sombra
        þ Nuevas funciones InspectDBF(), InspectSETS() y InspectOBJ()
        þ Corregido un bug en Like() funcionando en modo protegido
        þ Corregido un bug en pAddFile()


     From 3.15

        þ Nuevas funciones fGoTop(), fGoBottom(), fPos(), fEof()
        þ Nueva funci¢n fCopy()
        þ Nuevas funciones LowDiskSerial(), LowDiskFirm() y LowDiskModel()
          para identificar el n£mero de serie, firmware y modelo del disco
        þ Nueva funci¢n GetBaud()
        þ CpuType() retorna nuevos valores para identificar 8088, 8086,
          80286, 80386, 80486, Pentium, 6tium-7tium-8tium-9tium cuando
          est‚n disponibles, NEC V20, NEC V30, 80188 and 80186.
        þ Funciones IsVGA(), IsEGA(), IsCGA() y IsHerc() reescritas
        þ Corregido un bug en el soporte de Portugu‚s
        þ Nueva funci¢n de conversi¢n a formato WKS de Lotus
        þ Nueva funci¢n XCRC16() para XModem y ZModem
        þ IsSmartDrv() adaptado al API de la versi¢n 4.00
        þ Nuevas funciones SmartSize(), SmartSizeWin(), SmartReset(),
          SmartFlush(), SmartHits() y SmartMisses() para controlar
          SmartDrv y PC Cache
        þ Nueva funci¢n VirCheck() que identifica m s de 100 virus como
          tequila, Flip, Jerusalem family, yankee, blinker, dbase, y m s
          muchos m s


                                 - Page 280 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



     From 3.20

        þ Corregidos algunos bugs en el soporte de Alem n
        þ Corregidos algunos bugs en el soporte de Italiano
        þ Corregidos algunos bugs en el soporte de Franc‚s
        þ Corregido un fallo en la funci¢n ZipFile()
        þ Corregido un problema en VirCheck() con Novell
        þ Nuevos par metros para SetFont() y SetFontChar()
        þ Nueva funci¢n RealStars(), un verdadero campo de estrellas
        þ nRandom() reescrita en C
        þ Calendar() modificada


     From 3.21

        þ Corregido un bug en DispMenu()
        þ Nueva funci¢n compress para des/comprimir() ficheros mediante el
          m‚todo de Huffman
        þ Nueva funci¢n CompNumber() para des/comprimir n£meros Clipper
          a la mitad de su tama¤o
        þ Nueva funci¢n rVersion() para determina la versi¢n del driver de
          rat¢n, tipo de rat¢n instalado y la IRQ usada
        þ Nueva funci¢n SystemIdle() para controlar los tiempos muertos de
          la aplicaci¢n
        þ Arreglado el mensaje m¢dulo CLIP501 no definido en Clipper v5.01
        þ El tama¤o del c¢digo ha sido reducido gracias las nuevas opciones
          del compilador de C. Ahora el c¢digo es m s estable y compacto
        þ El motor del screensaver interno ha sido reescrito. Ahora es
          posible una total configuraci¢n del mismo mediante DoIdle().
          El screensaver es sensible a los waitstates internos de Clipper
          Las funciones TimeScr() y AplicName() ya no son necesarias y por
          lo tanto ya no existen en FAST.lib.
        þ Nuevas funciones DoIdle() and DoInterval()
        þ Soporte para obtener/cambiar informaci¢n de la Sound Blaster
        þ La funci¢n sbCDVol() ha sido cambiado por sbCDVolL() y sbCDVolR()
        þ La funci¢n sbRecScr() ha sido cambiado por sbRecScrL() y sbRecScrR()
        þ Las funciones Degrade() y Upgrade() han sido reescritas y mejoradas
          y ahora funcionan sin problemas en todas las tarjetas VGA
        þ KeyStuff() ha sido reescrita en C
        þ Nuevo par metro en sbVocPlay(), sbWavPlay(), dacVocPlay(),
          dacWavPlay(), spkVocPlay() y spkWavPlay().
        þ VirCheck() ahora retorna un array de l¢gicos


     From 3.50

        þ La calidad del sonido del speaker ha sido ampliamente mejorada
        þ cdStatus() detecta algunos flags como puerta abierta, playing y
          no hay disco en la unidad
        þ Corregido un bug en Calendar()
        þ Las funciones ComParity() y ComSpeed() han sido mejoradas
        þ Ahora pcxShow256() puede mostrar imagenes en tama¤o ventana
        þ Nueva funci¢n pcxShowVESA()
        þ Nueva funci¢n bmpShow256() y bmpInfo()

                                 - Page 281 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


        þ GetPalette() y SetPalette() han sido mejoradas accediendo a los
          puertos de la VGA
        þ AsciiTab() permite seleccionar un car cter ASCII
        þ Nueva funci¢n AsciiTabPro(), ideal para programadores
        þ Las funciones de ficheros han sido reescritas en C
        þ La funci¢n Caos() es renombrada a Chaos()
        þ La funci¢n NumParalel() es renombrada a NumParallel()
        þ Nueva funci¢n para determinar el/los tipos de UART del sistema
        þ Nuevas funciones para sonido FM, FMReset(), FMKeyOn(), FMKeyOff()
          FMSetVoice(), FMDelay(), FMLoadSBI()
        þ Nuevas funciones fgCls y fgFill()
        þ Arreglados los problemas de IsPirate() cuando SHARE est  cargado
        þ Nuevas funciones fgBox3D(), fgFrame(), fgFrame3D y fgWinBox()
        þ fSetPixel() y fGetPixel() han sido reescritas
        þ Nuevo par metro a Editor() para controlar el ancho de l¡nea
        þ Clock() ya no usa el m¢dulo GT para acceder al v¡deo y por lo tanto
          no altera la gesti¢n de eventos del sistema
        þ Nueva funci¢n IsBanyan()
        þ Nueva funci¢n NumDisks()
        þ Nueva funci¢n LowDiskInfo()
        þ Nuevas funciones cdClose(), cdTime(), cdNext() & cdPrevious()
        þ Nuevo par metro en cdPlay()
        þ Nuevo API para cambiar los mensajes internos
        þ El motor de CD Audio requiere menos recursos de memoria
        þ Corregido un fallo en winGetClip() y winSetClip()
        þ Compatible con Clipper 5.3
        þ gBox, gCircle, gEllipse, gLine, GetPixel y SetPixel han sido
          renombradas a fgBox, fgCircle, fgEllipse, fgLine, fGetPixel y
          fSetPixel.


























                                 - Page 282 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


Menu Choice: Cr‚ditos, Distribuidores de FAST.*




  FAST.* DISTRIBUTORS


  ARGENTINA                           ARGENTINA

  Ariel Salvador Gigliotti            xBase Support S.R.L.
  Panamericana 3787 (1609) Boulogne   Florida 683 Piso 9 Of. 71
  San Isidro - Buenos Aires           Capital Federal (1375)
  ARGENTINA                           ARGENTINA
  PHONE +541 737 2767                 PHONE +541 314 3116
  FAX   +541 943 0563                 FAX   +541 314 3410
  BBS   +541 790 1906


  AUSTRIA                             BELGIUM

  Ing. Dietmar Hauser                 BUG, Belgian Clipper User Group
  Arndtstraáe 77/7                    Moerkerkse Steenweg 322
  A-1120 Vienna                       B-8310 Brugge 3
  AUSTRIA                             BELGIUM
  PHONE +43 1 817 2760                PHONE +32 5035 7866
  FAX   +43 1 812 269777              FAX   +32 5037 2505
  BBS   +43 1 603 6176


  BRASIL                              CHILE

  Visual Informatica Ltda.            CompuData LTDA.
  Rua Manoel Ferreira de Mendoca 171  Tucapel 564 Ofic. 77
  Bairro Bandeirantes                 Casilla 2706
  Cuiaba, Estado de Mato Grosso       Concepci¢n
  BRASIL                              CHILE
  PHONE +55 65 624 8004               PHONE +56 41 246035
  PHONE +55 65 624 0706               FAX   +56 41 259128
  FAX   +55 65 624 0801               FAX   +56 41 542184


  FINLAND                             FRANCE

  ATK-Antti Oy                        DH Conseil
  Pohjoistullikatu 12                 14, Rue des Cit‚s Dolfus - BP 71
  23500 Nystad                        70400 Hericourt
  FINLAND                             FRANCE
  PHONE +358 22 8415066               PHONE +33 84 46 37 76
  FAX   +358 22 8415067               FAX   +33 84 46 18 02
  BBS   +358 22 8418882


  GERMANY                             ITALY


                                 - Page 283 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'


  SOFTSOL GmbH                        MOMOS S.A.S.
  Neue Str.35a                        Via Palade 5
  21073 Hamburg                       39011 Lana (BZ)
  GERMANY                             ITALY
  PHONE +49 40 7661290                PHONE +39 473 560988
  FAX   +49 40 7665664                FAX   +39 473 560979
  BBS   +49 40 7665527


  MEXICO                              NEDERLAND

  S.P.I. CABCER, S.A.                 Micro Consult Nederland
  Rio Sonora No. 76                   Rhijngeesterstraatweg 78
  Col. Real del Moral                 2343 BX Oegstgeest
  09010 M‚xico, D.F.                  NEDERLAND
  MEXICO                              PHONE +31 71 170401
  PHONE +525 6545226                  FAX   +31 71 156154
  FAX   +525 6545226                  BBS   +31 71 157618


  PERU                                SPAIN

  CEZ Ingenier¡a y Soporte S.A.       FAST.Software
  Los Patricios 116                   Manu Roibal
  Jes£s Mar¡a, Lima                   Sagastagoitia 13 2§ B izda
  PERU                                Barakaldo 48903 Bizkaia
  PHONE/FAX +51 14 626348             SPAIN
  PHONE/FAX +51 14 602535             PHONE +34 4 4992660
                                      FAX   +34 4 4605666
                                      BBS   +34 4 4605666


  UK                                  URUGUAY

  QBS Software Ltd.                   Grupo EIDOS Latinoam‚rica
  10 Barley Mow Passage               Convenci¢n 1490, Oficina 306
  London W4 4PH                       11100 Montevideo
  UK                                  URUGUAY
  PHONE +44 181 994 4842              PHONE +5982 93 11 41
  FAX   +44 181 994 3441              FAX   +5982 93 11 42
  BBS   +44 181 747 1979


  USA

  ZAC Catalog - Clipper only tools
  106 Access Road
  Norwood, MA 02062
  USA
  PHONE +1 800 254 7737  Sales
  PHONE +1 617 551 0860  Sales
  FAX   +1 617 551 0857  Sales
  FAX   +1 617 551 0947  Tech. Supp.


                                 - Page 284 -
Norton Guide: `FAST.lib 4.00 ¯ Referencia'



                                I N D E X
                                ---------



FAST.lib 1
    Tipos de Datos  ...............................................    2
    Dbf/Memo  .....................................................   51
    Disco y Ficheros  .............................................   53
    Juegos  .......................................................   82
    Gr ficos  .....................................................   88
    Teclado  ......................................................  133
    Redes y Multitaskers  .........................................  141
    MetaFunctions  ................................................  152


FAST.lib 2
    Menues  .......................................................  172
    Rat¢n  ........................................................  179
    Impresora  ....................................................  189
    Pantalla  .....................................................  195
    Comunicaciones Serie  .........................................  212
    CD-Audio SB DAC Speaker  ......................................  224
    Sistema  ......................................................  246


Cr‚ditos
    Copyright  ....................................................  274
    Agradecimiento  ...............................................  275
    Notas T‚cnicas  ...............................................  276
    API para soporte de lenguajes  ................................  277
    Notas del modo protegido  .....................................  278
    Nuevo en esta versi¢n  ........................................  279
    Distribuidores de FAST.*  .....................................  283




















                                 - Page 285 -
