Fórum Passar parâmetros para outro executável com o WinExec #352541
27/01/2008
0
Fiz assim:
Tenho uma data na Edit1. (Por exemplo: 26/01/2008)
Carreguei a variável DataPr assim:
[b:f6b92b5b2a]DataPr := DateToStr(Edit1.Text);[/b:f6b92b5b2a]
[b:f6b92b5b2a]DataPr[/b:f6b92b5b2a] está definida como [b:f6b92b5b2a]string[/b:f6b92b5b2a]
Coloquei o seguinte comando:
[b:f6b92b5b2a]WinExec(´c:\teste\lista.exe DataPr´, Sw_ShowNormal);[/b:f6b92b5b2a]
E quando o lista.exe é executado, o parâmetro foi com o nome da variável (DataPr) e não com o conteúdo dela.
Fiz a checagem e o parâmetro aparece como DataPr, quando deveria ser 26/01/2008.
Falta algo?
Agradeço.
Cps.art
Curtir tópico
+ 0Posts
27/01/2008
Asales
WinExec(´c:\teste\lista.exe [b:a7c59a2e35]´+DataPr[/b:a7c59a2e35], Sw_ShowNormal);
Gostei + 0
27/01/2008
Cps.art
Aí dá o seguinte erro:
[b:019c7951aa][Error] Unit1.pas(44): Incompatible types: ´String´ and ´PChar´[/b:019c7951aa]
Valeu.
Gostei + 0
27/01/2008
Marcelo.mileris
Gostei + 0
27/01/2008
Cps.art
Funcionou.
Brigadão!!!!!!!!!!!!!!
Gostei + 0
28/01/2008
Cps.art
Deixa eu explicar o que fiz e se dá pra fazer o que estou pensando.
Pelo que viram acima, executo uma rotina em Clipper, a partir de uma linha de comando do Delphi.
Passo parâmetros para a rotina do Clipper e funcionou bem.
É claro que enquanto a rotina do Clipper é executada, meu aplicativo em Delphi continua aberto.
Como a rotina em Clipper fui eu mesmo que montei, adaptei para receber os parâmetros, então minha questão é se dá pra adaptar essa rotina em clipper, para que quando fechada possa retornar parâmetros para o aplicativo em Delphi, ou seja, disponibilizar dados que eu possa carregar variáveis no delphi.
Tá ai o desafio para meus amigos delphianos.
Abração.
Gostei + 0
09/02/2008
Cps.art
Gostei + 0
09/02/2008
Asales
Gostei + 0
09/02/2008
Cps.art
Acho até que poderia sim.
No caso, se eu tivesse que passar 2 parâmetros para o Delphi, no arquivo texto que o clipper vai gerar, esses parâmetros devem estar 1 em cada linha do texto ou os 2 na mesma linha, separados por alguma coisa tipo, espaço, virgula, etc.. ?
Vou fazer um teste aqui.
Obrigado por enquanto.
Gostei + 0
29/04/2008
Robsonpassos
O aplicativo criado em Delphi pode receber parametros de linha de comando tranquilamente. Basta passa-los um apos o outro, e atentar para fazer o devido tratamento de cada um dentro do aplicativo.
Ex: C:\AppDelphi.exe Param1 Param2 Param3 Param4 ParamN
A funcao ParamStr(N) retorna um parametro passado na linha de comando.
Ex: ParN := ParamStr(2); // retorna o parametro Param2
ParN := ParamStr(5); // retorna o parametro ParamN
Para pegar a lista de todos os parametros usa a variavel ParamCount, segue exemplo de uso.
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
for i := 1 to ParamCount do
begin
if LowerCase(ParamStr(i)) = ´beep´ then
Beep
else if LowerCase(ParamStr(i)) = ´exit´ then
Application.Terminate;
end;
end;
Neste caso o sistema aceita e faz o tratamento de dois parametros ´beep´ ou ´exit´, soando um apito ou saindo do aplicativo.
Grande abraço.
robson@rcomps.com
Gostei + 0
29/04/2008
Cps.art
O procedimento que você descreveu é correto e funciona.
Executar um aplicativo (aplic.exe) em clipper funciona da mesma maneira, desde - é claro - que esse aplicativo esteja preparado para receber e tratar esses parâmetros, assim como em delphi.
O meu problema é um pouco mais complicado.
Eu executo um aplicativo em delphi, com ou sem parâmetros, que no caso não tem importância, e a partir desse aplicativo, numa certa linha, eu executo uma rotina em clipper, passando parâmetros gerados pelo delphi, sem fechar o aplicativo original em delphi.
Essa rotina em clipper gera e carrega uma variável (que nessas alturas não sei se se pode chamar de parâmetro), e quando ela se encerra (a rotina em clipper) e o controle volta para o aplicativo delphi (que ficou aberto), queria saber se é possível ´aproveitar´ o conteúdo dessa variável no delphi.
Como pode ter percebido, a rotina em clipper não ´abre´ novamente a rotina em delphi passando parâmetros como no seu exemplo(appdelphi.exe Param1 Param2), simplesmente retorna ao aplicativo delphi na linha seguinte a da chamada da rotina em clipper.
[b:f109793996]Por exemplo[/b:f109793996]: (meio imbecil mas serve para ilustrar)
[i:f109793996][b:f109793996]Você tem 2 calculadoras.
Uma SÓSOMA, a outra SÓSUBTRAI.
Você está usando a que SÓSOMA, mas num dado momento precisa fazer uma subtração.
Você deixa a que SÓSOMA ligada, liga a que SÓSUBTRAI, faz a operação de subtração, ´carrega na memória´ o resultado, desliga essa calculadora, volta à que SÓSOMA (que ficou ligada) e insere esse resultado nela e continua somando, até surgir a necessidade de se repetir a operação[/b:f109793996].[/i:f109793996]
É isso aí.
Agradeço pela colaboração
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)