Otra opción es usar ExtractStrings, que si respeta los blancos y permite especificar cual es el separador y cuales son los espacios en blanco
Código:
uses Classes;
var
lCampos : TStringList;
i: integer;
Registro: string;
begin
Registro := '12346; A B C D E; 25/11/2009'
lCampos := TStringList.Create;
ExtractStrings([';'], [' '], PChar(Registro), lCampos);
// En el TStringList lCampos tenemos cada uno de los campos de la cadena de caracteres.
for i := 0 to lCampos.Count-1 do
ShowMessage(lCampos[i]);
end;
Saludos,
Gerard.