Gracias a todos por la ayuda, al final con un poco de cada uno lo he resuelto de la siguiente forma
Código Delphi
[-]
contra:=EdtNoupass.Text;
car:=0;
num:=0;
for index:=1 to length(contra) do
begin
if (contra[index] in ['0'..'9']) then
inc(num)
else if not (contra[index] in ['0'..'9']) then
inc(car)
end;
ShowMessage(Format('NUMEROS: %d ' + #13 + 'CARACTERS: %d ',[car, num]) );