Delphi-Quellcode:
until ViKey > textInput; //Das schlüsselwort wird solange hintereinandergesetzt bis es länger ist als der Klartext
// "ÜBerschuss" hier egal da die spätere Schleife vom Klartext ausgeht
hier ist dann wohl der Fehler. Du musst wie du ja selber kommentierst die Länge der Strings vergleichen:
until Length(ViKey) > Length(textInput);
Ansonsten möchte ich die Anmerkungen von Lucky bezüglich sprechender Variablen-Namen nochmal betonen. So sparst du die einen großen Teil der Kommentare.
Du könntest dir auch das "initialisieren" des Results sparen (Setlength(Result),...)) wenn du weiter unten mit Result:=Result+chr(tempForEncrypt3 + (ord('A'))); o.ä. arbeitest.