Hola,
Para eso cuentas en Delphi con las funciones "ParamCount" y "ParamStr". Puedes pasar parámetros a tu programa, vamos a suponer que "-hazesto", entonces podrías averiguar si dicho parámetro ha sido pasado de este modo, aunque como verás si haces algunas pruebas podrás hacerlo de otros, pero, siempre implicando las funciones susomentadas (al menos que yo sepa):
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
for i := 0 to ParamCount do
begin
if (ParamStr(i) = '-hazesto') then
ShowMessage('Quieres que haga esto...');
if (ParamStr(i) = '-estotro') then
ShowMessage('Quieres que haga esto otro...');
end;
end;
Puedes hacer pruebas desde el mismo Delphi, en el menú Run puedes elegir la opción "Parameters..." y ahí escribir los que necesites pasar al programa que estés "depurando".
Edito: Cabe acaso añadir que el parámetro número 0 es siempre la ruta de tu programa, es decir, del ejecutable que va a procesar el resto de posibles parámetros.
Mira otro ejemplo, en este caso se supone que se nos puede pasar como primer parámetro (es decir, como parámetro 1) la ruta de un archivo de este modo: "-C:\boot.ini". Observa que el caracter de guión es opcional, no es necesario, y que las comillas lo serán siempre que la ruta del archivo en cuestión tenga espacios en blanco:
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
begin
if (FileExists(AnsiRightStr(ParamStr(1), Length(ParamStr(1))-1))) then
ShowMessage('Se pasó un archivo válido como parámetro número 1')
else
ShowMessage('No se pasó un archivo válido como parámetro número 1');
end;