PDA

Ver la Versión Completa : programa consola ¿como parsear parametros?


JXJ
28-04-2012, 03:52:37
hola.

tengo unas dudas con respecto al parseo de parametros.
en las aplicaciones de consola.

cuando se le pasan parametros de esta secuencia.

conecta -u usuario -p password -host 127.0.0.1 archivo-c:\micrachivo.txt

o cuando hasta tienen ? / \ = o hasta tienen modificadores [ ] *

conecta -u usuario -p password -host 127.0.0.1 -archivo c:\micrachivo.txt /eliminar -email=micorreo@hotmail.com


y a veces te pide un caracter de terminacion de secuencia. ejemplo ;
si no lo pones no se te toma en cuenta que esta enviando la orden

conecta -u usuario -p password -host 127.0.0.1 -archivo c:\micrachivo.txt /eliminar -email=micorreo@hotmail.com;

tendran algun codigo fuente para estudiarlo??

bueno gracias. es que casi no he usado consolas :confused:

ecfisa
28-04-2012, 05:13:24
Hola JXJ.

Los parámetros los podés obtener indicándole el índice a la función ParamStr y el total de parámetros enviados mediante la función ParamCount. Mientras que el texto ingresado con la variable CmdLine y con la función FindCmdLineSwitch podés comprobar la existencia de un switch en la cadena enviada.

Te pongo un ejemplo para ser mas explícito:

program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
i: integer;
begin
Writeln('Texto ingresado: ' + Pchar(CmdLine));
Writeln('Numero de parametros: ', ParamCount);
for i:= 1 to ParamCount do
Writeln('Parámetro ' + IntToStr(i) + ': ' + ParamStr(i));
if FindCmdLineSwitch('x') then
Writeln('Switch x presente')
else
Writeln('Switch x no presente');
end.

Y luego de compilarlo desde el cmd haces:

Conecta -u usuario -p password -host 127.0.0.1 -archivo c:\micrachivo.txt /eliminar -email=micorreo@hotmail.com

El resultado va a ser:

Texto ingresado: Conecta -u usuario -p password -host 127.0.0.1 -archivo c:\micrachivo.txt /eliminar -email=micorreo@hotmail.com
Numero de parametros: 10
Parametro 1: -u
Parametro 2: usuario
Parametro 3: -p
Parametro 4: password
Parametro 5: -host
Parametro 6: 127.0.0.1
Parametro 7: -archivo
Parametro 8: c:\miarchivo.txt
Parametro 9: /eliminar
Parametro 10: -email=micorreo@hotmail.com
Switch x no presente


Saludos