No debería resultarnos raro el que si exista, después de todo el problema que comenta Eduardo es típico y muchas veces nos hemos envuelto en él.
De existir lo más probable es que esté en la unidad StrUtils. Pero al menos hasta en D6 no veo alguna función que vaya en ese sentido. ¡Que extraño!
Lo que si yo lo encararía de otra forma Eduardo... tu función hace llamadas a la función Copy() a mi en lo personal me parece innecesario esto. Máxime sabiendo que podemos tratar al string de forma directa. Sería mucho más rápido algo como esto:
result := 0;
for i := 1 to Length(Text) do
if Text[i] = char
then inc(result)
De paso nos ahorramos la variable contador
La técnica de Eliseo, que no deja de ser igualmente interesante, es más del tipo cañonazo. Es demasiado para algo que puede encararse por un modelo más simple. ¡Se está creando un TStrinList para utilizar la técnica del delimitador y trozar el string original.
Volvamos a los clásicos.
Saludos,