Cuando haces nele mod 23, este valor siempre te va a dar 0 puesto que nele tiene el valor 23, por lo que esa operación no te sirve.
El valor mínimo que devuelve mod es 0, así que habrá que utilizar las letras como si la 'a' fuese un 0, para lo que hay que restarle a cada carácter el valor de ord('a'):
Código Delphi
[-]
for i := 1 to tamano do
cadena1[i] := chr(ord('a') + (ord(cadena1[i]) - ord('a') + desp) mod nele);