Dein Algorithmus ist ziemlich umständlich und mit den vielen, vielen Tests schlecht nachvollziehbar.
Schneller und einfacher geht es, wenn Du die Funktionen ord und chr für die Umwandlung in ASCII-Code und zurück nutzt.
Befindet sich der Klartext im String klar und soll der Geheimtext in den string geheim sowie die Verschiebungsweite in v (integer), so kann ein einzelner Buchstabe wie folgt verändert werden:
		                     
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 
 |     n := ord (klar[i]);n := 97 + (n + v - 97) mod 26;
 geheim[i] := chr (n);
 
 n := ord (geheim[i]);
 n := 97 + (n - v - 97 + 26) mod 26;
 klar[i] := chr (n);
 | 
		
	  
Der Algorithmus funktioniert hier für Kleinbuchstaben und kann auch auf andere Bereiche angepasst werden.
Der scheinbare "Trick" beruht darin, dass mittels mod 26 die Zahl n immer im Bereich von 'a' bis 'z' gehalten wird.
Beste Grüße
Mathematiker