Manual Básico Gambas

62
Manual Básico Gambas

Transcript of Manual Básico Gambas

Page 1: Manual Básico Gambas

Manual BásicoGambas

Page 2: Manual Básico Gambas

Índice

Referencia de GambasDescripciones del Lenguaje.Índice Alfabético del LenguajeComponentesLibreríasÍndice del Lenguaje por CategoríasÍndice alfabético del lenguaje

TutorialesInstalación (Librerías necesarias)Lo más básico de GambasInterfaz gráficaVariosAplicaciones en varios idiomas

Artículos GambasDiferencia entre VBComo escribir componentesIntroducción Visual a Gambas¿Cómo puedo convertir mi proyecto VB a Gambas?¿Cómo se hace para… ?

Programación en N-capas Bajo Gambas

Un ejemplo de juego simple, “The Bisha”Ejemplo de manejo de procesos, “GbPing”Otro ejemplo de colaboración entre procesos, "GbPloticusDemo"

Page 3: Manual Básico Gambas

Descripciones del Lenguaje.

AsignaciónAsigna el valor de una expresión a uno de los siguientes elementos: Una variable local. Un parámetro de una función. Una variable global o de clase. Un elemento de una matriz. Una variable pública de un objeto. Una propiedad de un objeto.

Algunas instrucciones que devuelven valores pueden emplear también la sintaxis de asignación: EXEC, NEW, OPEN, RAISE, SHELL.

EJEMPLOiVal = 1972Name = "[/def/gambas]"hObject.Property = iValcCollection[sKey] = Name...

Constantes del LenguajeCONSTANTE EJEMPLO

El valor verdadero. TRUE

El valor falso. FALSE

Los números Integer o Long. 0, 123, -32769, 10000000000

Enteros hexadecimales cortos con signo. &H1F5, &HFFFF, &FFFF

Enteros hexadecimales con signo. &H10BF332E, &10BF332E

Enteros hexadecimales sin signo. &H8000&, &HFFFF&

Enteros binarios. &X1010010101, %101001011

Números de coma flotante. 1.0, -5.345219E+45

Constantes de Cadena. "¡ Hola, mundo !"

Constantes de Cadena para ser traducidas. ("¡Este programa está muy bien!")

Constante nula / cadena vacía. NULL

Page 4: Manual Básico Gambas

Las constantes de cadena pueden contener los siguientes caracteres de escape:

CARACTER DE ESCAPE

EQUIVALENTE ASCII

\n Chr$(13)

\r Chr$(10)

\t Chr$(9)

\" Comillas

\\ Barra hacia atrás

\xx Chr$(&Hxx)

Puede escribir una constante de cadena dividida en varias partes sucesivas. Por ejemplo,

"Gambas" " es " "fenómeno"

es a todos los efectos la misma constante que "Gambas es fenómeno"

Chr$ SintaxisCaracter = Chr$ ( Código )Caracter = Chr ( Código )

Devuelve el caracter cuyo código ASCII es Código.

¡Precaución! Gambas utiliza UTF-8 como codificación interna, por lo que un caracter con código 128 o superior no tiene el mismo significado que en otras codificaciones, como ISO 8859-1.

Ejemplo

EjemploPRINT Chr$(65)

A

PUBLIC SUB Button1_Click()

DIM X AS Integer

FOR X = 32 TO 127 PRINT Chr$(X); NEXT

END

Page 5: Manual Básico Gambas

Constantes Predefinidas

Tipos de datos

Estas constantes son devueltas por TypeOf.

gb.Null valor NULL

gb.Boolean valor Boolean.

gb.Byte valor Byte.

gb.Short valor Short.

gb.Integer valor Integer.

gb.Long valor Long.

gb.Single valor Single.

gb.Float valor Float.

gb.Date valor Date.

gb.String valor String.

gb.Variant valor Variant.

gb.Object referencia Object.

gb (gb)Esta clase estática incluye todas las constantes básicas de Gambas empleadas por un gran número de funciones. Símbolos

Esta clase es estática.

Constantes  

Ascent  BigEndian  Binary  Boolean  Byte  Class  Currency  Date  Day  Descent  Device  Directory  Exec  File  Fixed  Float  Friday  GeneralDate  GeneralNumber  Hour  Integer  International  Link  LittleEndian  Long  LongDate  LongTime  MediumDate  MediumTime  Minute  Monday  Month  NewLine  Null  Object  Percent  Pipe  Quarter  Read  Saturday  Scientific  Second  Short  ShortDate  ShortTime  Single  Socket  Standard  String  Sunday  Tab  Text  Thursday  Tuesday  Variant  Wednesday  Week  WeekDay  Write  Year 

Page 6: Manual Básico Gambas

Tipos de archivo

Estas constantes tiene uso en la función Stat().

gb.File Archivo normal

gb.Directory Carpeta

gb.Device Archivo especial de dispositivo

gb.Pipe Tubería con nombre

gb.Socket Archivo especial de Socket

gb.Link Enlace simbólico

Constantes de cadena

gb.NewLine Caracter de "Nueva Línea". Equivalente a Chr$(10)

gb.Tab Caracter de Tabulación. Equivalente a Chr$(9)

Tipos de ordenación

Constantes empleadas en el método Sort de las Matrices.

gb.Binary Ordenación binaria.

gb.Text Ordenación ASCII, no distingue mayúsculas de minúsculas.

Días de la semana

Estas constantes son valores devueltos por la función WeekDay().

gb.Monday Lunes

gb.Tuesday Martes

gb.Wednesday Miércoles

gb.Thursday Jueves

gb.Friday Viernes

gb.Saturday Sábado

gb.Sunday Domingo

Page 7: Manual Básico Gambas

Formatos numéricos predefinidos

gb.GeneralNumber Escribe en número con 12 dígitos decimales. Usa formato científico si su valor absoluto es menor que 10-4 o mayor que 107.

gb.Fixed Equivalente a "0.00"

gb.Percent Equivalente a "###%"

gb.Scientific Escribe un número con su exponente y 8 dígitos decimales.

Formatos predefinidos de fecha y hora

gb.GeneralDate Escribe la fecha sólo si el dato de fecha y hora tiene una parte de fecha, y escribe la hora sólo si tiene parte de hora.

gb.LongDate Formato de fecha larga.

gb.MediumDate Formato de fecha media.

gb.ShortDate Formato de fecha corta.

gb.LongTime Formato de hora larga.

gb.MediumTime Formato de hora media.

gb.ShortTime Formato de hora corta.

Formatos predefinidos monetarios

gb.Currency Formatea un dato monetario usando el símbolo nacional de la moneda.

gb.International Formatea un dato monetario usando el símbolo internacional de moneda.

Formatos misceláneos

gb.Standard Emplee gb.GeneralNumber para formatear números y gb.GeneralDate para fechas y horas.

Page 8: Manual Básico Gambas

Estructuras de Control de Bucles BREAK Abandona un bucle inmediatamente.

CONTINUE Salta a la siguiente iteración de un bucle.

DO ... LOOP Bucle infinito.

FOR ... NEXT Bucle con contador.

FOR EACH ... NEXT Bucle de enumeración.

REPEAT ... UNTIL Bucle con una comprobación de salida al final.

WHILE ... WEND Bucle con una comprobación de salida al inicio.

BREAKSintaxisBREAKAbandona un bucle inmediatamente.

PUBLIC SUB Button1_Click()

DIM X AS Integer

FOR X = 1 TO 1000 IF X = 200 THEN BREAK PRINT X NEXT

END

CONTINUESintaxisCONTINUESalta a la siguiente iteración de un bucle. EjemploFOR I = 1 TO 10

IF I = 1 THEN PRINT "Uno"; CONTINUE ENDIF

IF I = 2 THEN PRINT " Dos"; CONTINUE ENDIF

PRINT I;

NEXT

PRINT

Uno Dos 3 4 5 6 7 8 9 10

Page 9: Manual Básico Gambas

DOSintaxisDO [ WHILE Expresión ]Comienza un bucle infinito delimitado por las instrucciones DO ... LOOP. Si se especifica WHILE, el bucle se detendrá cuando la Expresión sea falsa. Si la expresión es falsa al comienzo, el bucle no se ejcuta ninguna vez. EjemploPUBLIC SUB Form_Open()

DIM a AS Integer

a = 1

DO WHILE a <= 10 PRINT "Hola Mundo "; a INC a LOOP

END

FORSintaxisFOR Variable = Expresión TO Expresión [ STEP Expresión ]   ...NEXTRepite un bucle mientras se incrementa una variable. Tenga en cuenta que la variable ha de ser:

Numérica, es decir, un byte, un short, un integer o un número real float o single. Una variable local.

Tenga en cuenta también que si la expresión inicial es mayor que la final (para valores positivos de STEP), o es menor que la final (para valores negativos), el bucle nunca se ejecutará.

DIM I AS Integer

FOR I = 1 TO 20 STEP 3 PRINT I & " ";NEXT

1 4 7 10 13 16 19

FOR EACHSintaxisFOR EACH Variable IN Expresión …NEXTRepite un bucle mientras se enumera un objeto. Expresión debe ser una referencia a un objeto enumerable: por ejemplo, una colección, o una matriz. EjemploDIM Dict AS NEW CollectionDIM Elemento AS String

Dict["Azul"] = 3

Page 10: Manual Básico Gambas

Dict["Rojo"] = 1Dict["Verde"] = 2

FOR EACH Elemento IN Dict PRINT Elemento;NEXT

3 1 2

REPEAT Sintaxis

SintaxisREPEATDa comienzo a una estructura de bucle delimitada por las instrucciones REPEAT ... UNTIL. Tenga en cuenta que el bucle repeat siempre se ejecuta al menos una vez, incluso si el valor indicado por UNTIL es falso inicialmente.

UNTIL Sintaxis

SintaxisUNTIL Expresión

Finaliza un bucle delimitado por las instrucciones REPEAT ... UNTIL. El bucle se repite hasta que la Expresión es cierta. EjemploPUBLIC SUB Form_Open()

DIM I AS Integer

REPEAT PRINT Timer UNTIL Timer > 10

END

WHILE Sintaxis

SintaxisWHILE ExpresiónDa comienzo a un bucle delimitado por las instrucciones WHILE ... WEND. El bucle se repite mientras la Expresión sea cierta. Si la expresión es falsa al inicio, el bucle nunca se ejecuta. La estructura DO WHILE ... LOOP es equivalente. EjemploPUBLIC SUB Form_Open()

DIM a AS Integer

a = 1

WHILE a <= 10 PRINT "Hola Mundo "; a INC a WEND

END

Page 11: Manual Básico Gambas

Estructuras de Control Misceláneas GOTO Salto incondicional.

QUIT Cierra el programa.

RETURN Retorna de una función o procedimiento.

STOP Simula un punto de interrupción.

WITH ... END WITH Selector de objeto por defecto.

GOTO SintaxisGOTO Etiqueta

Salta a una etiqueta declarada en otro punto de la función.

QUIT SintaxisQUIT

Finaliza un programa inmediatamente. Todas las ventanas se cerrarán, y todo se liberará lo mejor posible.

RETURN SintaxisRETURN [ Expresión ]

Sale de un procedimiento o función devolviendo el valor Expresión. Si sale de un procedimiento, no puede especificar ninguna Expresión. Si sale de una función, y no se especifica la Expresión, el valor devuelto es el valor por defecto asociado al tipo de dato devuelto por la función.

STOP SintaxisSTOP

Detiene el programa y lanza el depurador, del mismo modo que un punto de interrupción en la línea actual. Esta instrucción no hace nada si el programa no está siendo depurado. Ejemplo'Parar si la siguiente condición se cumpleIF Name = "Gates" THEN STOP

Page 12: Manual Básico Gambas

WITH Sintaxis

SintaxisWITH Objeto  ...END WITHEntre las instrucciones WITH y END WITH, una expresión que comience por un punto se refiere al objeto. Puede imbricar las estructuras WITH ... END WITH.

WITH hButton .Text = "Cancelar"END WITH

'es equivalente a

hButton.Text = "Cancelar"

Estructuras y Funciones de Control de Flujo CHOOSE Elije un valor de una lista.

IIf Función de comprobación inmediata.

IF ... THEN ... ELSE ... ENDIF Estructura condicional.

SELECT CASE ... END SELECT Estructura de elección.

Choose

SintaxisValor = Choose (Elección , Resultado #1 , Resultado #2 [ , ... ] )Esta función devuelve el valor de uno de sus argumentos Resultado # i , de acuerdo con el valor de Elección.

Si Elección es 1, se devuelve Resultado #1. Si Elección es 2, se devuelve Resultado #2, y así en adelante... Si Elección es menor o igual a cero, o no hay valor especificado para el valor de Elección, se

devuelve NULL. EjemploX = 3PRINT Choose(X, "uno", "dos", "tres", "cuatro")

tresEjemploX = 3PRINT IsNull(Choose(X * 2, "uno", "dos", "tres", "cuatro"))

True

Page 13: Manual Básico Gambas

IIf

SintaxisValue = IIf ( Boolean , True value [ , False value ] )Value = If ( Boolean , True value [ , False value ] )

Evaluate the Boolean expression, and return True value if this expression is true, or False value if this expression is false.

If False value is not specified, it is assumed to be NULL.

Be careful! Contrary to IF, or the C/Perl ? operator, both True value and False value are evaluated, whatever the value of Boolean is.

ExampleX = 7PRINT If((X MOD 2) = 0, "even", "odd")

oddExample' Never do the following in real code, because it is not translatable!X = 7PRINT "You have " & X & " message" & If(X <> 1, "s") & " waiting."

You have 7 messages waiting.ExamplePRINT If((X MOD 2) = 1, "odd", 1 / 0)

Division by zero

IF

SintaxisIF Expresión [ { AND IF | OR IF } Expresión ... ] THEN  ...[ ELSE IF Expresión [ { AND IF | OR IF } Expresión ... ] THEN  ... ][ ELSE  ... ]ENDIFEstructura condicional de control. Si utiliza varias expresiones de comprobación separadas por la palabra clave AND IF, son evaluadas de izquierda a derecha hasta que la primera con valor FALSE es alcanzada, y se considera entonces el conjunto con valor FALSE. Si todas las expresiones son TRUE, el conjunto se considera con valor TRUE. Si utiliza varias expresiones de comprobación separadas por la palabra clave OR IF, son evaluadas de izquierda a derecha hasta que la primera con valor TRUE es alcanzada, y se considera entonces el conjunto con valor TRUE. Si todas las expresiones son FALSE, el conjunto se considera con valor FALSE.

No se puede mezclar las palabras clave AND IF y OR IF en una misma línea.

Page 14: Manual Básico Gambas

DIM k AS Integer

FOR k = 1 TO 10

IF k < 5 OR IF k > 5 THEN PRINT k;; ELSE PRINT PRINT "¡Llegamos al 5!" END IF

NEXT

PRINT

1 2 3 4¡Llegamos al 5!6 7 8 9 10

SELECT s

SintaxisSELECT [ CASE ] Expresión

  [ CASE Expresión [ TO Expresión #2 ] [ , ... ]    ... ]

  [ CASE Expresión [ TO Expresión #2 ] [ , ... ]    ... ]

  [ { CASE ELSE | DEFAULT }    ... ]

END SELECTSelecciona una expresión a comparar, y ejecuta el código encerrado en la expresión correspondiente CASE. Si no concuerda ninguna de las expresiones CASE, se ejecutará el código dentro de la expresión DEFAULT o CASE ELSE. Una expresión CASE es una lista de valores simples o intervalos entre dos valores separados por la palabra clave TO. Ejemplo'Desea calcular una función aleatoria.'Repite una función aleatoria mil veces para'conocer cuantas veces aparecen los números'1, 2, 3, 4, 5 o 6.

DIM x AS IntegerDIM w AS IntegerDIM a AS IntegerDIM b AS IntegerDIM c AS IntegerDIM d AS IntegerDIM e AS IntegerDIM f AS Integer

Page 15: Manual Básico Gambas

FOR x = 1 TO 1000

w = Int(Rnd(6) + 1)

SELECT CASE w CASE 1 a = a + 1 CASE 2 b = b + 1 CASE 3 c = c + 1 CASE 4 d = d + 1 CASE 5 e = e + 1 CASE 6 f = f + 1 CASE ELSE PRINT "¡Esto es imposible!" END SELECT

NEXT

PRINT a, b, c, d, e, f

Flujos y funciones de Entrada/Salida CLOSE Cierra un Flujo

EOf Devuelve un valor indicando si se alconzó el final de un archivo.

FLUSH Vuelca la salida de un Flujo que dispone de un buffer.

INPUT Lee cadenas de un Flujo de texto y las convierte en valores.

INPUT FROM Redirige la entrada estándar.

LINE INPUT Lee líneas de un Flujo de texto.

LOCK Bloquea un Flujo abierto.

LOf Devuelve la longitud de un Flujo.

OPEN Abre un archivo para lectura o escritura y crea un Flujo.

OUTPUT TO Redirige la salida estándar.

PRINT Escribe expresiones en un Flujo.

READ Lee datos binarios de un Flujo.

SEEK Cambia la posición del puntero de un Flujo.

SEEk Obtiene la posición del puntero de un Flujo.

UNLOCK Desbloquea un Flujo abierto.

WRITE Escribe datos binarios en un Flujo.

Page 16: Manual Básico Gambas

CLOSE SintaxisSintaxisCLOSE [ # ] Flujo

Cierra un archivo abierto, u otro tipo de Flujo. Esta instrucción nunca falla.

Si ha abierto un Flujo de proceso, cerrarlo significa cerrar la entrada estándar, similar a pulsar CTRL+D en un terminal.

Eof SintaxisSintaxisBooleano = Eof ( [ Flujo ] )

Devuelve TRUE si el puntero se encuentra al final de un flujo. Si no se especifica Flujo, se emplea la entrada estándar. Véase LINE INPUT para un ejemplo.

FLUSH SintaxisSintaxisFLUSH [ [ # ] Flujo ]

Fija el contenido de un flujo que dispone de un buffer. Si no se especifica el buffer, todos los flujos abiertos son fijados.

Fijar el contenido de un flujo abierto para lectura no tiene sentido.

INPUT SintaxisSintaxisINPUT [ # Flujo , ] Variable [ , Variable ... ]

Lee el Flujo, y convierte elementos separados por caracteres de espacio o retornos de carro con la función Val antes de situar el valor en las variables. Si no se especifica el flujo, se lee de la entrada estándar.

Page 17: Manual Básico Gambas

INPUT FROM SyntaxSintaxisINPUT FROM Stream

Redirects the default standard input to the stream Stream. The default standard input is used by INPUT, READ, LINE INPUT, Eof and Lof when you don't specify their stream argument. Calls to this instruction can be imbricated. SyntaxINPUT FROM DEFAULT

Redirects the default standard input back to the value it had before the last redirection

LINE INPUT

SintaxisLINE INPUT [ # Flujo , ] Variable

Lee una línea entera de texto del flujo indicado. Si no se especifica un flujo, se utilizará la entrada estándar. No emplee esta instrucción para leer desde archivos binarios, ya que perderá los caracteres de retorno de carro. Emplee READ en su lugar. Ejemplo'Muestra un archivo en la consola

hFile = OPEN NombreArchivo FOR INPUT

WHILE NOT Eof(hFile) LINE INPUT #hFile, UnaLinea PRINT UnaLineaWEND

CLOSE #hFile

LOCK SintaxisSintaxisLOCK [ # ] Flujo

Intenta dar de alta un bloqueo de sistema en un flujo abierto. Si el flujo ya está bloqueado por otro proceso, el comando falla.

Lof

SintaxisLongitud = Lof ( Flujo AS Stream )

Devuelve la longitud de un flujo abierto.

Page 18: Manual Básico Gambas

OPEN NombreArchivo FOR READ AS #hFile...PRINT "La longitud del archivo es: "; Lof(hFile)

Si el flujo no es un archivo, es decir, un objeto Process o un Socket, retorna el número de bytes que pueden ser leídos de una sola vez.

PUBLIC SUB Process_Read()

DIM sBuffer AS String

PRINT "Puedo leer: "; Lof(LAST) ' Read them READ #LAST, sBuffer, Lof(LAST)

END

OPEN xSintaxisStream = OPEN File name FOR [ READ | INPUT ] [ WRITE | OUTPUT ] [ CREATE | APPEND ] [ WATCH ]

Opens a file for reading, writing, creating or appending data. The file must exist, unless the CREATE keyword is specified.

If the CREATE keyword is specified, then the file is created, or cleared if it already exists. If the APPEND keyword is specified, then the file pointer is moved to the end of file just after the file is

opened. If the READ or WRITE keyword are specified, then the input-output are not buffered. If the INPUT or OUTPUT keyword are specified, then the input-output are buffered. If the WATCH keyword is specified, the file is watched by the interpreter :

o If at least one byte can be read from the file, then the event handler File_Read() is called. o If at least one byte can be written into the file, then the event handler File_Write() is called.

If the file is successfully opened, a stream object is returned to the variable Stream. Errors

MESSAGE DESCRIPTION

Access forbidden (#43)

The requested access to the file is not allowed, or search permission is denied for one of the directories in the path prefix of pathname, or the file did not exist yet and write access to the parent directory is not allowed.

File is a directory (#46)

File name refers to a directory.

File or directory does not exist (#45)

File name does not exist, or a directory component in pathname does not exist or is a dangling symbolic link.

Out of memory The system ran out of memory.

Page 19: Manual Básico Gambas

(#1)

Page 20: Manual Básico Gambas

Device is full (#37)

File name was to be created but the device containing File name has no room for the new file.

Not a directory... (#49)

A component used as a directory in File name is not, in fact, a directory.

System error... (#42)

Other possible system errors: Too many symbolic links were encountered in resolving File name. The process already has the maximum number of files open. The system limit on the total number of open files has been reached. File name refers to a device special file and no corresponding device exists. The named file is a named pipe and no process has the file open for reading. File name refers to a file on a read-only filesystem and write access was

requested.

File name refers to an executable image which is currently being executed and write access was requested.

Example' Prints the contents of a text file to the screen

DIM hFile AS FileDIM sLine AS String

hFile = OPEN "/etc/passwd" FOR INPUT

WHILE NOT Eof(hFile) LINE INPUT #hFile, sLine PRINT sLineWENDExample' Watching a serial port

DIM hFile AS File

hFile = OPEN "/dev/ttyS0" FOR READ WRITE WATCH

...

PUBLIC SUB File_Read()

DIM iByte AS Byte

READ #hFile, iByte PRINT "Got one byte: "; iByte

ENDExample' Reading data from a BMP file, known to use little-endian format :

DIM hFile AS FileDIM iData AS Integer

hFile = OPEN "image.bmp" FOR INPUThFile.ByteOrder = gb.LittleEndian...READ #hFile, iData

Page 21: Manual Básico Gambas

OUTPUT TO

SintaxisOUTPUT TO Flujo

Redirige la salida estándar por defecto al flujo indicado. La salida estándar por defecto se utiliza por parte de PRINT y WRITE si no especifica el argumento de flujo. Las llamadas a esta función pueden imbricarse. SintaxisOUTPUT TO DEFAULT

Redirige la salida estándar de nuevo hacia el valor previo a la redirección.

PRINT SintaxisSintaxisPRINT [ # Flujo , ] Expresión [ { ; | ;; | , } Expresión ... ] [ { ; | ;; | , } ]

Escribe expresiones en el flujo. Si no se especifica un flujo, se utilizará la salida estándar. Las expresiones se convierten en cadenas empleando la función Str$.

Si no hay un punto y coma después de la expresión, se añade un caracter de "nueva línea" después de la última expresión.

Si hay un punto y coma doble, se añade un caracter de "espacio" entre las expresiones. Si se utiliza una coma en lugar de un punto y coma, se añade un caracter de tabulación (código 9

ASCII) para separar las expresiones.

READ SyntaxSintaxisREAD [ # Stream , ] Variable [ , Length ]READ [ # Pointer , ] Variable [ , Length ]

Reads the stream Stream as binary data whose type is given by the type of the variable. The binary representation is the one used by the WRITE instruction. If the stream is not specified, then the standard input is used. If Variable is a string, you can specify a length that indicates the number of bytes to read. If the length is negative, then (- Length) bytes are read up to the end of stream. If no length is specified for a string, it is is read from the stream. The string then must have been written with the WRITE instruction.

This instruction uses the byte order of the stream to read the data.

If you specify a Pointer instead of a Stream, then data will be read directly from the memory address specified by the pointer.

If you try to read at a forbidden memory address, you will get an error. The interpreter won't crash.

Page 22: Manual Básico Gambas

SEEK SyntaxSintaxisSEEK [ # ] Stream , Position

Defines the position of the stream pointer, for the next read/write operation. If Position is negative, then the stream pointer is moved relatively to the end of the file. To move the stream pointer after the end of the file, you must use the Lof function. Example' Move to the beginning of the fileSEEK #hFile, 0

' Move after the end of the fileSEEK #hFile, Lof(#hFile)

' Move 100 bytes before the end of the fileSEEK #hFile, -100

Seek SintaxisSintaxisPosición = Seek ( Flujo )

Devuelve el valor actual del puntero en el flujo indicado.

El valor devuelto es un entero largo.

Muchos tipos de flujos no disponen de un puntero: Process, Socket, ...

UNLOCK SintaxisSintaxisUNLOCK [ # ] Flujo

Desbloquea un Flujo previamente bloqueado con la instrucción LOCK.

WRITE SintaxisWRITE [ # Flujo , ] Expresión [ , Longitud ]WRITE [ # Puntero , ] Expresión [ , Longitud ]

Escribe una expresión en un Flujo usando su representación binaria.

Si no se especifica el flujo, se emplea la salida estándar.

Page 23: Manual Básico Gambas

Si la Expresión es una cadena, puede especificar la longitud que indica el número de bytes a escribir. Si no se especifica la longitud, éste se escribe en el flujo justo antes de la cadena de datos.

Esta función emplea el orden de bytes del flujo para leer datos.

Si especifica un puntero en lugar de un flujo, los datos serán escritos directamente en la dirección de memoria especificada por el puntero.

Si intenta escribir en una dirección de memoria prohibida, obtendrá un error. El intérprete no fallará.

Funciones Aritméticas Abs Devuelve el valor absoluto de un número.

DEC Decrementa una variable.

Frac Devuelve la parte fraccional de un número.

INC Incrementa una variable.

Int Devuelve la parte entera de un número.

Max Devuelve el número mayor.

Min Devuelve el número menor.

Round Redondea un número.

Sgn Devuelve el signo de un número.

Funciones de Cadena Asc Devuelve el código ASCII de un carácter en una cadena.

Chr$ Devuelve un carácter a partir de su código ASCII.

InStr Busca una cadena dentro de otra.

LCase$ Convierte una cadena a minúsculas.

Left$ Devuelve los primeros caracteres de una cadena.

Len Devuelve la longitud de una cadena.

LTrim$ Elimina espacios en blanco de la parte inicial de una cadena.

Mid$ Devuelve parte de una cadena.

Replace$ Reemplaza, dentro de una cadena, una subcadena por otra.

Right$ Devuelve los últimos caracteres de una cadena.

RInStr Busca una cadena dentro de otra empezando por su final.

RTrim$ Elimina espacios en blanco de la parte final de una cadena.

Space$ Devuelve una cadena que contiene sólo espacios.

Page 24: Manual Básico Gambas

Split Divide una cadena en subcadenas.

String$ Devuelve la misma cadena concatenada varias veces.

Subst$ Sustituye cadenas en un patrón.

Trim$ Elimina espacios en blanco del final de una cadena.

UCase$ Convierte una cadena a mayúsculas.

Funciones de Conversión CBool Convierte un valor en Boolean.

CByte Convierte un valor en Byte.

CDate Convierte un valor en Date.

CFloat Convierte un valor en Float.

CInt Convierte un valor en Integer.

CLong Convierte un valor en Long.

Conv$ Convierte una cadena de un juego de caracteres a otro.

CShort Convierte un valor en Short.

CSng Convierte un valor en Single.

CStr Convierte un valor en String.

DConv$ Convierte una cadena del juego de caracteres del sistema a UTF-8 (juego de caracteres de la interfaz gráfica).

SConv$ Convierte una cadena desde el juego de caracteres UTF-8 (el empleado en la interfaz gráfica) al juego de caracteres del sistema.

Str$ Convierte un número o fecha en una cadena.

Val Convierte una cadena en un número o fecha.

Funciones de Fecha y Hora Date Devuelve la fecha sin el componente de hora.

DateAdd Añade un periodo de tiempo a la fecha dada.

DateDiff Devuelve el periodo de tiempo entre dos fechas.

Day Devuelve el día de un valor Date.

Hour Devuelve el número de horas de un valor Date.

Minute Devuelve el número de minutos de un valor Date.

Month Devuelve el número de mes de un valor Date.

Now Devuelve la fecha y hora actuales.

Second Devuelve los segundos de un valor Date.

Page 25: Manual Básico Gambas

Time Devuelve la parte de hora de un valor Date.

Timer Devuelve el número de segundos transcurridos desde que se inició el programa.

Week Devuelve el número de semana de un valor Date.

WeekDay Devuelve el número de día en la semana de un valor Date.

Year Devuelve el año de un valor Date.

Funciones de Formateo Bin$ Formatea un número en binario.

Format$ Formatea un número o fecha.

Hex$ Formatea un número en hexadecimal.

Funciones Misceláneas Array Crea y devuelve una matriz.

Funciones para Archivos y Carpetas Access Comprueba los permisos de acceso a un archivo.

COPY Copia un archivo.

DFree Devuelve el espacio libre en un dispositivo.

Dir Devuelve el contenido de una carpeta.

IsDir Devuelve si la ruta apunta a una carpeta.

KILL Elimina un archivo.

LINK Crea un enlace simbólico.

MKDIR Crea una carpeta.

RDir Devuelve el resultado de una carpeta recursivamente.

RENAME Renombra o mueve un archivo o carpeta.

RMDIR Elimina una carpeta vacía.

Stat Obtiene información sobre un archivo.

Temp$ Crea nombres de archivos temporales.

Funciones para Comprobar Caracteres IsAscii Comprueba si una cadena contiene sólo caracteres ASCII.

IsBlank Comprueba si una cadena contiene sólo caracteres de espacio o tabulaciones.

IsDigit Comprueba si una cadena contiene sólo dígitos.

IsHexa Comprueba si una cadena contiene sólo dígitos hexadecimales.

Page 26: Manual Básico Gambas

IsLCase Comprueba si una cadena contiene sólo letras minúsculas.

IsLetter Comprueba si una cadena contiene sólo letras.

IsPunct Comprueba si una cadena contiene sólo caracteres no alfanuméric

IsSpace Comprueba si una cadena contiene sólo caracteres de espacio.

IsUCase Comprueba si una cadena contiene sólo letras mayúsculas.

Funciones para Tipos de Datos IsBoolean Devuelve si una expresión pertenece al tipo Boolean.

IsByte Devuelve si una expresión pertenece al tipo Byte.

IsDate Devuelve si una expresión pertenece al tipo Date.

IsFloat Devuelve si una expresión pertenece al tipo Float.

IsInteger Devuelve si una expresión pertenece al tipo Integer.

IsLong Devuelve si una expresión pertenece al tipo Long.

IsNull Devuelve si una expresión es nula (NULL).

IsNumber Devuelve si una expresión es un número.

IsObject Devuelve si una expresión pertenece al tipo Object.

IsShort Devuelve si una expresión pertenece al tipo Short.

IsSingle Devuelve si una expresión pertenece al tipo Single.

IsString Devuelve si una expresión pertenece al tipo String.

TypeOf Devuelve el tipo de valor de una expresión.

Funciones Sobre Números Aleatorios Randomize Inicializa la semilla de generación de números pseudo aleatorios.

Rnd Devuelve un número pseudo aleatorio.

Funciones Trigonométricas ACos Calcula el arcocoseno de un número.

ACosh Calcula el arcocoseno hiperbólico de un número.

Ang Calcula la coordenada "ángulo polar" para dos coordenadas cartesianas.

ASin Calcula el el arcoseno de un número.

ASinh Calcula el arcoseno hiperbólico de un número.

ATan Calcula la arcotangente de un número.

Page 27: Manual Básico Gambas

ATan2 Calcula la arcotangente de dos números.

ATanh Calcula la arcotangente hiperbólica de un número.

Cos Calcula el coseno de un ángulo.

Cosh Calcula el coseno hiperbólico de un ángulo.

Deg Convierte radianes a grados.

Hyp Calcula la hipotenusa de un triángulo.

Mag Calcula la coordenada "distancia polar" para dos coordenadas cartesianas.

Pi Devuelve π o un múltiplo de π.

Sin Calcula el seno de un ángulo.

Sinh Calcula el seno hiperbólico de un ángulo.

Tan Calcula la tangente de un ángulo.

Tanh Calcula la tangente hiperbólica de un ángulo.

Rad Convierte grados en radianes.

Funciones acerca de Logarítmos y Exponentes Cbr Raíz cúbica

Exp Exponente

Exp2 2^x

Exp10 10^x

Expm Exp(x) - 1

Log Logaritmo neperiano

Log2 Logaritmo en Base 2

Log10 Logaritmo decimal

Logp Log(1+x)

Sqr Raíz cuadrada

Gestión de errores CATCH Captura un error en una función.

DEBUG Muestra en consola un mensaje de depuración.

ERROR Indica si ocurrión un error, o muestra un mensaje de error.

Error La clase estática Error.

FINALLY Ejecuta un bloque de código en una función, incluso si hubo un error.

TRY Intenta ejecutar una orden, sin disparar un error.

Page 28: Manual Básico Gambas

Gestión de Eventos EVENT Declara un evento.

RAISE Dispara un evento.

Object.Attach Enlaza un evento con su gestor de eventos.

Object.Detach Separa un evento de su gestor de eventos.

STOP EVENT Cancela un evento.

WAIT Llama al lazo de eventos hasta que haya pasado un tiempo indicado.

Gestión de Funciones Externas Alloc Reserva un bloque de memoria.

EXTERN Declara una función externa.

Free Libera un bloque de memoria reservado con Alloc.

LIBRARY Define la librería donde se sitúan las funciones externas.

Realloc Recorta o expande el bloque de memoria reservado con Alloc.

StrPtr Devuelve una copia de una cadena terminada en cero, situada en la dirección de memoria dada.

Gestión de Objetos y Clases CLASS Declara el uso de una clase.

Class Gran cantidad de métodos estáticos para obtener información de una clase.

CREATE Declara una clase como "auto-instanciable".

EXPORT Declara una clase como exportada.

INHERITS Hace que una clase herede de otra sus propiedades, métodos y eventos.

LAST Devuelve una referencia al último objeto que ha disparado un evento.

ME Devuelve una referencia al objeto actual.

NEW Instancia un objeto.

New Instancia un objeto con una clase que se especifica dinámicamente.

Object Gran cantidad de métodos estátios relativos a la gestión de un objeto.

SUPER Devuelve una referencia al objeto actual que utilizará la implementación de los símbolos públicos de la clase padre.

Page 29: Manual Básico Gambas

Gestión de Procesos EXEC Ejecuta un proceso externo.

SHELL Ejecuta un comando externo en una shell.

Lazo de Eventos Cuando un programa Gambas ha terminado de ejecutar su función de inicio Main(),  entra en el llamado lazo de eventos o event loop.

El programa se encontrará dentro de este lazo o bucle mientras haya:

un Process corriendo. un Timer habilitado. un File siendo vigilado. una ventana abierta.

En este lazo, el programa procesará cualquier evento disparado por cualquier objeto, y para cada evento, llamará a su correspondiente /def/eventhandler.

Puede llamar de forma recursiva al lazo de eventos usando la instrucción WAIT. Esto puede conllevar una recursión infinita, pero es el único modo de refrescar la interfaz de usuario durante la ejecución de un bucle.

Matrices Nativas Gambas dispone de un tipo predefinido de matriz para cada tipo de datos nativo.

El nombre de estas clases es el nombre del tipo de datos que almacenan seguido de un corchete abierto y otro cerrado.

Byte[] Matriz de valores Byte.

Short[] Matriz de valores Short.

Integer[] Matriz de valores Integer.

Long[] Matriz de valores Long.

Single[] Matriz de valores Single.

Float[] Matriz de valores Float.

Date[] Matriz de valores Date.

String[] Matriz de valores String.

Object[] Matriz de valores Object.

Variant[] Matriz de valores Variant.

Page 30: Manual Básico Gambas

Native Container Classes Gambas interpreter offers you three kinds of native container classes:

Arrays

An Array is a set of values indexed by an Integer that are consecutive in memory.

All the values in an array have the same datatype, and there is one array class for each native datatype, except Boolean.

See Native Arrays for more information.

Array can be multi-dimensional, i.e. values are indexed by more than one Integer.

If an array has one dimension, then it can be shrinked or expanded dynamically, with the Resize method.

Lists

A List is a double-linked list of values indexed by an Integer, each one being stored separately in memory.

Only Variant values can be stored in a List.

The List maintains a internal pointer so that finding a position in the list does not imply iterates all the elements.

Collections

A Collection is a set of values indexed by a String.

Only Variant values can be stored in a Collection.

The values are internally stored in a hash table that grows dynamically when more and more elements are inserted in it.

Which one use ?

Here is a short comparison between the three kind of container classes:

Array List Collection

Internal storage Memory block. Double linked-list. Hash table.

Key datatype Integer Integer String

Page 31: Manual Básico Gambas

Access speed

Fastest

The access is immediate.

Fast

Accessing the first, last, previous or next element is immediate. Otherwise the list is enumerated.

Fast

The key must be compared with all other keys having the same hash code.

Insertion speed

Slow

The memory block is resized if needed. And inserting in the middle of the array needs moving part of the memory block.

Fastest

Once the position is found, the insertion is immediate.

Fast

The key hash code gives a index into a linked list of memory slots.

The hash table have to be resized and recalculated sometimes to keep the access fast.

Deletion speed

Slow

The memory block is resized if needed. And deleting in the middle of the array needs moving part of the memory block.

Fastest

Once the element is found, the deletion is immediate.

Fast

Once the element is found, the deletion is immediate.

The hash table have to be resized and recalculated sometimes to keep the access fast.

Operadores Aritméticos Numero + Numero Suma dos números.

- Numero Calcula el signo opuesto de un número. El opuesto de cero es cero.

Numero - Numero Resta dos números.

Numero * Numero Multiplica dos números.

Numero / Numero Divide dos números. Un error División por cero (#26) ocurrirá si el valor del divisor es cero.

Numero ^ Potencia Eleva Numero a la Potencia indicada.

Por ejemplo, 4 ^ 3 = 64

Numero \ Numero

Numero DIV Numero

Calcula el cociente de la división de dos números. Un error División por cero (#26) ocurrirá si el valor del divisor es cero.

A \ B = Int(A / B)

Numero MOD Numero

Calcula el resto de la división de dos números. Un error División por cero (#26) ocurrirá si el valor del divisor es cero.

Page 32: Manual Básico Gambas

Operadores de Asignación Variable = Expresión Asignación directa.

Variable += Expresión Asignación con suma. Es un sinónimo de Variable = Variable + Expresión

Variable -= Expresión Asignación con sustracción. Es un sinónimo de Variable = Variable - Expresión

Variable *= Expresión Asignación con multiplicación. Es un sinónimo de Variable = Variable * Expresión

Variable /= Expresión Asignación con división. Es un sinónimo de Variable = Variable / Expresión

Variable \= Expresión Asignación con división entera. Es un sinónimo de Variable = Variable \ Expresión

Variable &= Expresión Asignación con concatenación de cadenas. Es un sinónimo de Variable = Variable &= Expresión

Variable &/= Expresión Asignación con concatenación de rutas. Es un sinónimo de Variable = Variable &/= Expresión

Operadores de Cadena Cadena & Cadena Concatena dos cadenas.

Cadena &/ Cadena

Concatena dos cadenas que contienen nombres de archivo. Añade un separador de ruta entre dos cadenas si es necesario.

Cadena LIKE Numero

Comprueba si una cadena concuerda con un patrón.

Operadores Lógicos Número AND Número

Calcula el "y lógico" del valor binario de dos números.

NOT Número Calcula el "no lógico" del valor binario de un número.

Número OR Número Calcula el "o lógico" del valor binario de dos números.

Número XOR Número

Calcula el "o exclusivo lógico" del valor binario de dos números.

Page 33: Manual Básico Gambas

Tipos de Datos Tipo de

dato Descripción

Valor por defecto

Tamaño en memoria

Boolean Verdadero o falso. FALSE 1 byte

Byte 0...255 0 1 byte

Short -32.768...+32.767 0 2 bytes

Integer -2.147.483.648...+2.147.483.647 0 4 bytes

Long -9.223.372.036.854.775.808...+9.223.372.036.854.775.807 0 8 bytes

Single Como el tipo float de C. 0.0 4 bytes

Float Como el tipo double de C. 0.0 8 bytes

Date Fecha y hora, cada una almacenada en un entero. NULL 8 bytes

String Una cadena con un número variable de caracteres. NULL 4 bytes

Variant Cualquier tipo de dato. NULL 12 bytes

Object Referencia anónima a un objeto. NULL 4 bytes

Pointer Una dirección de memoria. 0 4 bytes

Page 34: Manual Básico Gambas

gb.compress - Librería de compresión Este componente permite comprimir y descomprimir archivos, así como leer y escribir en archivos comprimidos utilizando los métodos habituales en flujos. También permite comprimir y descomprimir cadenas en memoria.

Actualmente, el componente puede utilizar dos algoritmos, gracias a las librerías zlib y libbzip2. Los programas más conocidos que utilizan estos algoritmos son las utilidades de línea de comandos "gzip" y "bzip2", por lo que podrá utilizar archivos generados por estas utilidades.

Este componente emplea internamente las librerías "libz" y "libbz2", por lo que debe tenerlas instaladas en los equipos que hagan uso del componente de compresión. Si sólo desea utilizar uno de los dos algoritmos, no es necesario que instale ambas librerías.

Más información sobre el funcionamiento interno:

http://www.gzip.org/zlib/ http://sources.redhat.com/bzip2/

Todas las distribuciones habituales de GNU/Linux incluyen paquetes con estas librerías, FreeBSD y otros sistemas Unix, también. Ambos compresores están libres de patentes, y actualmente pueden ser utilizados incluso en programas que no sean "código abierto" u "open source", si sigue todas las instrucciones contenidas en sus licencias (léalas detenidamente para las versiones que planee utilizar).

Clases

/comp/gb.compress/compress/comp/gb.compress/uncompress

gb.db - Componente para Acceso a Bases de Datos Este componente le permite acceder a varios sistemas gestores de bases de datos. Clases

ConnectionDB/comp/gb.db/database/comp/gb.db/field/comp/gb.db/index/comp/gb.db/result/comp/gb.db/resultfield/comp/gb.db/table/comp/gb.db/user

Este componente le permite acceder a los siguientes sistemas gestores de bases de datos:

PostgreSQL MySQL SQLite ODBC

Page 35: Manual Básico Gambas

Tanto PostgreSQL como MySQL son sistemas de bases de datos cliente/servidor, lo que significa que la conexión se realiza sobre un proceso servidor.

Por el contrario, SQLite está basado en un archivo o datos en memoria, por lo que no hay proceso servidor al que conectarse. This means that the user may need to include a fully qualified path to the database file if the default is not satisfactory. See the Connection class for more information.

Note that this component creates an intermediate layer between the specific server and your program, so that you can use exactly the same code whatever database backend you decide to use.

This works only if:

You create your database by using the database manager or by using this component. You use the /comp/db/find, /comp/db/create and /comp/db/edit methods. You don't put SQL values directly in the request, but use the substitution feature of the previous

methods. You don't use the /comp/db/exec method, that lets you send SQL request directly to the backend, so

that you can access its the specific features.

If you don't need database independance, do as you like!

gb - Clases nativas internas de Gambas Este componente contiene todas las clases incluídas dentro del intérprete por defecto. Clases

Application/comp/gb/boolean[]Byte[]Class/comp/gb/classesCollection/comp/gb/component/comp/gb/componentsDate[]/comp/gb/enumErrorFileFloat[]Integer[]Long[]Object

Object[]ParamProcessShort[]Single[]/comp/gb/statStreamStringString[]SystemUserVariant[]gb

Page 36: Manual Básico Gambas

Application (gb)Esta clase entrega información acerca de la aplicación que está ejecutándose, y dota de acceso al entorno del proceso así como a la línea de comandos del proceso. Símbolos

Esta clase es estática.

Propiedades  

Args  /comp/gb/application/dir  /comp/gb/application/env  /comp/gb/application/handle  /comp/gb/application/id  /comp/gb/application/name  /comp/gb/application/path  /comp/gb/application/title  /comp/gb/application/version 

Byte[] (gb)Esta clase implementa una matriz dinámica de valores Byte. Símbolos

Esta clase proviene de .Array.

Esta clase es Instanciable.Esta clase actúa como una matriz Lectura/escribir.Esta clase es enumerable con la palabra clave FOR EACH.

Propiedades   Métodos  

/comp/gb/.array/bounds  Count  Data  /comp/gb/.array/dim  Length  Max 

  Add  Clear  Copy  /comp/gb/byte[]/fill  Find  Insert  Pop  Push  Read  Remove  Resize  Reverse  Sort  Write 

Class (gb)This class depicts a class used by the interpreter.

This class can be native, i.e. implemented in a component, or a class written in Gambas.

Símbolos

Esta clase no es instanciable.Esta clase actúa como una matriz Sólo lectura.

Propiedades   Métodos   Constantes  

/comp/gb/class/count  /comp/gb/class/hidden  /comp/gb/class/instance  /comp/gb/class/name  /comp/gb/class/native  /comp/gb/class/parent  /comp/gb/class/symbols 

  /comp/gb/class/load    /comp/gb/class/constant  /comp/gb/class/event  /comp/gb/class/method  /comp/gb/class/property  /comp/gb/class/variable 

Page 37: Manual Básico Gambas

Collection (gb)Implementa una tabla hash (en la cual se pueden buscar rápidamente pares clave-valor), en la que los elementos tienen una clave de tipo cadena y los valores son de tipo variant.

Cuando no hay nada asociado a una clave, se emplea el valor NULL. En consecuencia, asociar el valor NULL con una clave, tiene el mismo efecto que eliminarlo de la colección.

El tamaño de la tabla hash interna crece automáticamente al insertar datos.

Símbolos

Esta clase es Instanciable.Esta clase actúa como una matriz Lectura/escribir.Esta clase es enumerable con la palabra clave FOR EACH.

Propiedades   Métodos  

Count  Key  Length    Add  Clear  Exist  Remove