Hola...
El código anterior lo escribí al vuelo y basándome en el código que tenías, así que tiene algunos errores...
La línea
Palabra := Copy(Texto, 2, Length(Texto) - 1) en realidad debería decir:
Palabra := Copy(Texto, 2, Length(Texto) - 2), para que obtenga la subcadena sin el primer y último caracter.
Ahora, esta es una versión ya comprobada:
Código Delphi
[-]
var
C: string;
C1: string;
C2: string;
Texto: string;
Palabra: string;
Mensaje: string;
I: Integer;
begin
Texto := InputBox('Ingresar mensaje', 'Ingrese un mensaje', '');
Palabra := '';
for I := 1 to Length(Texto) do
begin
C := Copy(Texto, I, 1);
if C <> ' ' then
Palabra := Palabra + C;
if ((C = ' ') or (I = Length(Texto))) then
begin
if Length(Palabra) mod 2 = 0 then
begin
C1 := Copy(Palabra, 1, 1);
C2 := Copy(Palabra, Length(Palabra), 1);
Palabra := Copy(Palabra, 2, Length(Palabra) - 2);
Palabra := C2 + Palabra + C1
end;
Mensaje := Mensaje + ' ' + Palabra;
Palabra := ''
end
end;
ShowMessage(Trim(Mensaje))
Saludos...