rgstuamigo ha explicado bastante bien el problema pero hace falta añadir algo. En delphi las cadenas (String) no son como en C. En C el primer elemento de una cadena es el 0 mientras que en delphi es el 1 (el 0 está reservado para el tamaño) Cas cadenas en terminan con un char 0
De esta forma, tenemos que considerar el índice i al traducir y bien usar i-1 o cambiar los límites del bucle...
Código:
return aux+S[i-1]+215;
Saludos.