DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Função ParamStr - Passando Parâmetros via comando do Windows

Iremos nesse artigo aprender a usar a função do delphi ParamStr, Que pode ser usada para se passar para um .exe parâmetros provenientes de um comando do windows.

Olá pessoal, vamos ver neste artigo de Delphi a função ParamStr.

Para que server essa função?

Podemos usar essa função para varias tarefas em nossa aplicação, uma delas que uso muito e inserir parâmetros em minha aplicação usando o comando do Windows.

Vejamos o código da mesma

Listagem 1: Código da Função ParamStr

function ParamStr(Index: Integer): string;
{$IFDEF MSWINDOWS}
var
  P: PChar;
  Buffer: array[0..260] of Char;
begin
  Result := '';
  if Index = 0 then
    SetString(Result, Buffer, GetModuleFileName(0, Buffer, Length(Buffer)))
  else
  begin
    P := GetCommandLine;
    while True do
    begin
      P := GetParamStr(P, Result);
      if (Index = 0) or (Result = '') then Break;
      Dec(Index);
    end;
  end;
{$ENDIF MSWINDOWS}
{$IF defined(LINUX) or defined(MACOSX)}
begin
  if Index < ArgCount then
    Result := PCharArray(ArgValues^)[Index]
  else
    Result := '';
{$IFEND LINUX or MACOSX}
end;

Podemos perceber que essa função pede um valor de entrada do tipo inteiro e me retorna uma string, vamos criar um exemplo simples para entender a função.

Crie uma nova aplicação VCL em Delphi, insira nesse form criado 3 componentes TLabes. Configure os componentes para ficar dessa forma:

Layout do projeto

Figura 1. Layout do projeto.

Listagem2: No evento onShow do Form:

procedure TForm2.FormShow(Sender: TObject);
begin
lbl1.Caption:=ParamStr(0);
lbl2.Caption:=ParamStr(1);
lbl3.Caption:=ParamStr(2);
end;

Click em F9 para compilar.

Salve o seu projeto, abra o prompt de comando do seu windows e digite o seguinte:

ParamStr.exe “JOSELUIZ” “DEVMEDIA”

Veja o resultado abaixo:

Resultado do código

Figura 2. Resultado do código.

Podemos ver que a posição 0 da função buscou o path do .exe, A posição 1 e 2 pegou as informações que eu passei entre aspas duplas “ PARAMETRO 1”

ESPAÇO “PARAMETRO 2”.

Lembrando que temos que inserir espaço entre os parâmetros.

Abraços e até o próximo artigo.


Jose Luiz De Medeiros
Programador em delphi a 9 anos desde a versão 2. Professor em varios cursos de delphi com banco de dados a 3 anos. Varios sistemas desenvolvidos para empresas. Vasto entendimento em banco de dados, MYSQL, FIREBIRD. Programador em web na linguagem PHP a 2 anos.
O que você achou deste post?

    5 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Marcos Dyone
não consegui não! na hora que eu coloco o comando no prompt ele da o seguinte erro: 'Project1.exe' não é reconhecido como um comando interno ou externo, um programa operavel ou um arquivo em lotes.
[há +1 ano] - Responder

 

Wesley Yamazack
Olá Marcos, entramos em contato com o autor para que ele possa te ajudar.

Um abraço.
[há +1 ano] - Responder
 

[autor] Jose Luiz De Medeiros
Boa noite Marcos,

Confere quando você for executar o seu .exe pelo prompt se esta mesmo na pasta onde o executável de encontra. pois o Delphi xe em diante, se você não definir no Delphi a pasta de destino ele ira salvar o .exe em c:\suapasta\debug.
Confere ai por favor e qualquer coisa estou a sua disposição.

Abraços:
[há +1 ano] - Responder
 

Diego Freire
Gostaria de saber se tem como eu saber se o programa foi executado pelo exe ou pelo delphi?
Preciso disso para que minhas implementações com parametros funcionem apenas no exe, e não quando compilo pelo delphi.
[há +1 mês] - Responder
 

[autor] Jose Luiz De Medeiros
Boa tarde,

Essa função sempre vai ser chamada quando você executa o seu .exe. não importa se é direto pelo Delphi ou não, pois toda vez que se compila um projeto o Delphi roda o executável no final da compilação.
Essa função normalmente usamos para integração entre módulos num ERP, controlando acesso de determinado usuário.
imagine que você tenha num ERP um modulo principal e um modulo de caixa por exemplo, num botão do modulo principal você chama o modulo de caixa dessa forma.
begin
winexe('modulocaixa.exe devmedia 123456',sw_show);
end;

aqui estou rodando um outro executável e passando dois parâmetros que no meu casa seria um usuário e uma senha fixa.

no evento do oncreate do modulo caixa eu poderia fazer essa validação:

begin
if Paramstr(1) <> 'devmedia' and
Paramstr(2) <> '123456' then
begin
ShowMessage('Você não tem permissão para esse módulo...');
Application.Terminate;
end;
end;

Se não foi essa a sua dúvida me envie outra mensagem com mais detalhes para eu tentar te ajudar.


Jose Luiz
[há +1 mês] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03