Introdução
Ao desenvolver utilitários de linha de comando ou aplicativos de suporte, a capacidade de interpretar argumentos externos é vital. Seja para indicar verbosidade com um sinalizador como verbose ou definir caminhos de arquivos como import=entrada.log, saber capturar esses dados corretamente garante que seu software seja integrável a scripts e automações complexas.
Neste guia, exploraremos métodos eficientes para detectar e validar parâmetros no Delphi e Lazarus, garantindo manutenibilidade e profissionalismo ao seu código.
Lidando com parâmetros de entrada em seu aplicativo
Onde verificar ou ler os parâmetros informados?
O melhor lugar para ler os parâmetros de entrada é logo nas primeiras linhas de execução para que os mesmos possam ser usados antes do processo iniciar-se. No Delphi e no Lazarus, o ponto mais estrito seria o arquivo de Projeto (.dpr ou .lpr), mas muitos preferem fazê-lo no OnCreate do primeiro formulário.
Os parâmetros são obrigatórios ou opcionais?
Muitos programadores criam utilitários que servem de apoio a um programa principal. O aplicativo principal chama esses utilitários via linha de comando para tratar funcionalidades específicas, como processamento de logs. Para isso, é preciso determinar o que é essencial para a execução.
// Exemplo de validação de parâmetros obrigatórios
var
ErrorMsg: String;
sParam: String;
iParamCount: Cardinal;
bHasImport, bHasExport: Boolean;
i: Integer;
begin
iParamCount := ParamCount;
bHasImport := false;
bHasExport := false;
ErrorMsg := '';
if iParamCount = 0 then
ErrorMsg := 'Não há parâmetros'
else
begin
for i := 1 to iParamCount do
begin
sParam := ParamStr(i);
if ContainsText(sParam, 'import=') then bHasImport := true;
if ContainsText(sParam, 'export=') then bHasExport := true;
end;
if (ErrorMsg = '') and (not bHasImport) then
ErrorMsg := 'Falta o parametro import=(...)';
end;
if ErrorMsg <> '' then
begin
writeln(stderr, ErrorMsg);
Sleep(5000);
Halt(2); // Indica falha ao chamador
end;
end;
Lendo, validando e processando
O uso de TStringList facilita muito a gestão de pares "chave=valor". Ao carregar os parâmetros em uma lista, podemos usar métodos como IndexOfName e Values para acessar os dados de forma elegante.
Criando utilitários no Linux e Windows
Se estiver usando Lazarus/FPC, tome cuidado com dependências de ambiente gráfico. Para criar utilitários puros, vá em Project Options -> Compiler Options -> Config and Target e mude o LCL widgetset para nogui.
No Linux, após compilar seu utilitário, lembre-se de definir as permissões antes da execução:
chmod +x meuutilitario
./meuutilitario import=entrada.log export=saida.csv
Ecoando mensagens no terminal
No Windows, para que as mensagens de WriteLn apareçam no console sem abandonar a IDE durante o desenvolvimento, desligue a opção Win32 gui application (-WG) nas opções do compilador.
Aprofunde seu conhecimento: Assista a uma demonstração prática sobre o uso da unit CustApp para simplificar parâmetros.
▶ Ver Código e Demos no GitHubConclusão
Dominar o tratamento de parâmetros de entrada transforma scripts simples em ferramentas profissionais e robustas. Ao implementar validações rigorosas e garantir que seu utilitário comunique erros via Exit Codes, você facilita a integração com sistemas de terceiros e automações de infraestrutura, seja no Windows ou no Linux.