CAPÍTULO 4
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




Redirecionando a saída padrão, o uso de CLOSE

Os programas alem de emitir informações através de stdin e stderr, podem receber através do console, conforme o usuário digite as ordens. Esta recepção realiza-se mediante a entrada padrão stdin, e se tivermos conhecimento de C sabemos que podemos  utilizar com funções scanf() ou getchar(). Com o Gambas, podemos empregar o flag FOR WRITE para indicar ao interpretador que estamos interessados em escrever dados para o processo filho. Uma vez lançado o processo deste modo, podemos usar as funções normais de escrita de arquivos com o descritor de processo (PRINT, WRITE).


Suponhamos um programa com uma área de texto (TextArea) chamada TxtTexto, na qual escrevemos qualquer coisa, e desejamos conhecer o número de linhas (separadas com o retorno do carro), que escrevemos. Podemos para isso usar o comando wc (significa Word Counter e não outra coisa), com o parâmetro -l (número de linhas) em nosso exemplo chamaremos o programa, escreveremos o conteúdo de TxtTexto ao processo, e receberemos o resultado pela entrada padrão. Já que vamos ler e escrever, podemos combinar os flags READ e WRITE. Para isso criaremos um projeto gráfico com um botão BtnContar, com o texto Contar, e um TextArea chamado TxtTexto, com o texto em branco inicialmente para que depois escrevamos um texto. Figura 4
Figura 4. Projeto com o botão Contar e área de texto TextTexto.

PRIVATE
hProc AS Process

PUBLIC SUB Process_Read()

DIM sCad AS String

LINE INPUT #hProc, sCad

Message("O texto tem :  " & sCad & " linhas")

END

PUBLIC SUB BtnContar_Click()

hProc = EXEC ["wc", "-l"] FOR READ WRITE

PRINT #hProc, TxtTexto.Text

CLOSE #hProc

END

Na  função   BtnContar_Click(),   executamos   o   programa   indicando   ao   interpretador   que desejamos acesso de leitura e escrita ao processo, escrevemos neste o conteúdo da caixa de texto e, em seguida executamos CLOSE sobre o processo.

Seguidamente, executamos wc -l a partir de um terminal de linha de comandos. Observamos que podemos ir escrevendo no processo tudo o que queremos, Assim criamos várias linhas e depois pressionamos de uma vez as teclas Control + D.

É quando nos retorna o número de linhas que escrevemos. Ao pressionarmos o caracter especial CONTROL + D, estamos indicando ao processo que encerramos o fluxo de dados e, por tanto, procede que ele compute o recebido e devolva o resultado.

Quando no programa Gambas executamos CLOSE sobre um descritor de arquivos, o resultado é similar: encerra-se a redireção entre a saída padrão do processo filho e nosso processo principal, com o qual o primeiro fica informado de que recebeu todos os dados.
O resto do programa é trivial: no evento READ recebemos a cadeia que contem o número de linhas e o mostramos ao usuário em uma mensagem.
















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 Benoit Minisini

LICENSA DESTE DOCUMENTO


É permitido a cópia e distribuição da totalidade ou parte desta obra sem fins lucrativo. 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 lucrativo 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)