Vamos por partes, tu no le estas pasando parámetros al programa, lo que estas indicando con < y > al interprete de comando es que redirija la entrada y la salida del ejecutable a unos ficheros. Dado que < y > son comando propios del interprete de comandos y no del ejecutable, es el interprete de comando el que debe procesarlos.
Tienes 2 soluciones redireccionar la entrada y la salida tu mismo, o ejecutar el programa a través del interprete de comandos. La primera opción es bastante compleja, la segunda sin embargo es bastante sencilla:
Código Delphi
[-]ShellExecute(Form1.Handle, nil, 'cmd.exe', '/c otter < socrates.in >sali.out', 'c:\', SW_SHOWNORMAL);
Aunque como ya te recomendé en otro hilo, tambien puedes usar el
truco 54