CAPÍTULO 2
Programação visual com Software Livre
EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo.  Prólogo de Benoit Minisini


Tipos de conversões



Gambas permite várias conversões entre tipos de dados. A forma de fazer a conversão pode ser implícita ou explicita. São conversões implícitas quando o próprio interpretador do Gambas encarrega-se de gestiona-las. Por exemplo:

DIM Resultado AS Single

DIM Operando1 AS Single

DIM Operando2 AS Integer

Operando1 = 3.5
Operando2 =  2
Resultado = Operando1  *  Operando2

Neste caso, para poder realizar a multiplicação, o interpretador converte, de forma transparente para o programador, o operando2 para um valor Single. São conversões explicitas as que o programador deve fazer ao escrever o código para poder realizar operações, mesclar dados de vários tipos, etc.

Estas conversões fazem-se mediante funções que estão incluídas no BASIC do Gambas. Evidentemente, a conversão será feita sempre que seja possível, caso contrário é produzido um erro. Esta é a lista de funções de conversão existente:

*Cbool (expressão): converte a expressão à um valor booleano, verdadeiro ou falso. O resultado será falso se a expressão é falsa, o numero 0, uma cadeia de texto vazia ou um valor nulo. Será verdadeira nos demais casos. Por exemplo:

-Devolve false as seguintes operações: Cbool(“”), Cbool(0), Cbool(NULL).

-Devolve true as operações: Cbool(1), Cbool(“Gambas”).

*CByte (expressão): converte a expressão em um valor tipo Byte. Primeiro converte a expressão para um numero binário de 4 bytes. Se este número  for maior que 255, corta recolhendo os 8 bits de menor peso. Por exemplo, Cbyte(“17”) devolve 17, mas Cbyte(100000) devolve 160. é porque o número 100.000 em binário é 11000011010100000, seus 8 últimos bits são 10100000, que passado de binário a decimal é igual a 160. Se não soubermos operar com números binários o melhor que podemos fazer é evitar este tipo de conversão que resulta em valores tão “surpreendentes”.

*CShort (expressão), CInt(expressão) ou CInteger(expressão), e CLong(expressão): convertem respectivamente, a expressão em um número do tipo Short, Integer, e Long. No caso de CShort a conversão realizada igual a CByte, podendo produzir resultados estranhos igualmente se a expressão resultante de um número for maior que 32.767.

*CDate (expressão): converte a expressão em uma data, mas devemos ter cuidado porque não admite o formato de data local, só o formato inglês mês/dias/anos horas:minutos:segundos. Quer dizer, CDate(“09/06/1972 01:45:12”) isto é, dia 6 de setembro de 1972

*CSingle (expressão) ou CSng(expressão) e CFloat(expressão) ou CFlt(expressão): convertem, respectivamente, a expressão de um número do tipo Single e Float. A expressão deve usar o ponto (.) e não a vírgula (,) como separador decimal.

*Cstr (expressão): converte a expressão em uma cadeia de texto sem levar em conta a configuração local. Portanto, CStr(1.58) devolve a cadeia de texto 1.58, independente se a configuração local indica que o separador decimal é um ponto ou uma vírgula o Cstr(CDate(“09/06/1972 01:45:12”)) devolve  “09/06/1972 01:45:12”.

*Str$ (expressão): Converte a expressão em uma cadeia de texto, levando em conta a configuração local. Portanto Str$(1.58) devolve a cadeia de texto 1,58, se a configuração local estiver em português. Do mesmo modo Str$(CDate(“09/06/1972 01:45:12”)) devolve “06/09/1972 01:45:12” se a configuração estiver em português já que neste idioma costuma escrever as datas na forma dia/mês/ano.

*Val (expressão): converte uma cadeia de texto em um tipo Boolean, Date ou outros tipos numéricos, dependendo do conteúdo da expressão. Val é a expressão oposta de Str$ e também leva em conta a configuração local do computador que à executa.

O Gambas tenta converter a expressão em um tipo Date, se não pode tenta converter em um número com decimais, se tão pouco pode, tenta converter em um número inteiro e finalmente, tenta converter em um tipo Boolean.




Cópia literal

Extraído do livro “GAMBAS, programação visual com software Livre”, da editora EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo. Prólogo de Benoît Minisini

LICENSA DESTE DOCUMENTO


É permitido a cópia e distribuição da totalidade ou parte desta obra sem fins lucrativos. Toda cópia total ou parcial devera expressar o nome do autor e da editora e incluir esta mesma licença, adicionando se é uma cópia literal “Cópia literal”. Se é autorizada a modificação e tradução da obra  sem fins lucrativos sempre se deve constar na obra resultante  a modificação o nome da obra original o autor da obra original e o nome da editora e a obra resultante também deverá ser livremente reproduzida, distribuída, ao publico e transformada em termos similares ao exposto nesta licença.

Tradução

Cientista
 (Antonio Sousa)