Hola egopolice, que yo sepa es así como funciona, la forma que se me ocurre para que te separe tomando en cuenta los espacios es utilizando QuoteChar.
Código Delphi
[-]
StringList.QuoteChar := ';';
StringList.Delimiter := ' ';
StringList.DelimitedText := ';Juan Pérez Martínez; ;jpm@isp.com; ;Compañia Universal;';
tu cadena tendría que estar de esa forma, egopolice sería mejor que reemplaces por la _ como lo estabas haciendo y despues esa _ por un espacio. O buscar otra forma sin usar Delimiter y DelimiterText.
Saluditos