Integrando saídas de comandos shell com sua aplicação Kylix
Nesse artigo irei mostrar como executar um programa qualquer e pegar o retorno dele, tudo de dentro da sua aplicação feita no Kylix.
Introdução
Pra começar crie uma nova aplicação, instancie no form um
botão e um memo.
No início do código fonte da aplicação, defina o uso da API Libc na cláusula "uses":
No início do código fonte da aplicação, defina o uso da API Libc na cláusula "uses":
uses
SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls, Libc;
SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls, Libc;
Dê um duplo clique no botão e vamos começar a programar! Adicione o seguinte código ao evento de clique no botão:
procedure TForm1.Button1Click(Sender: TObject);
var
Processos : PIOFile;
Linha : Array[0..254] of Char;
begin
Processos := popen(pchar(ls -lah), 'r');
while fgets(Linha,255,Processos) <> nil do begin
Memo1.lines.add( Trim( String(Linha) ) );
end;
pclose(Processos);
end;
var
Processos : PIOFile;
Linha : Array[0..254] of Char;
begin
Processos := popen(pchar(ls -lah), 'r');
while fgets(Linha,255,Processos) <> nil do begin
Memo1.lines.add( Trim( String(Linha) ) );
end;
pclose(Processos);
end;
Pronto! Ao executar a aplicação poderemos ver o conteúdo da saída do comando "ls -lah" no memo.
Os comandos que nos permitiram isso foram o popen(), que executa o comando em si e o Memo1.lines.add(), que para cada linha da saída do comando adicionou uma linha ao objeto Memo1. Simples né?
Um abraço,
Anderson Lazzari
Sugestão: publique o seu artigo no delphi3000.com - a gente tem que publicar bastante coisa em Kylix para que a Borland saiba que a comunidade está se movimentando.