Ошибка, например, в циклах for.
Я бы сделал так:
http://pascalabc.net/WDE/?file=06257.pasProgram LastWorlds;
var str1,str2,a,b: string;
i:integer;
pos1,pos2: integer;
begin
write('1st string: ');
readln(str1);
write('2nd string: ');
readln(str2);
str1 := TrimRight(str1);
str2 := TrimRight(str2);
i:=Length(str1);
while str1[i] <> ' ' do
begin
i:=i-1;
end;
pos1 := i;
i:=Length(str2);
while str2[i] <> ' ' do
begin
i:=i-1;
end;
pos2 := i;
a:= RightStr(str1,Length(str1)-pos1);
b:= RightStr(str2,Length(str2)-pos2);
str1:= LeftStr(str1,pos1) + b;
str2:= LeftStr(str2,pos2) + a;
Writeln(str1);
Writeln(str2);
end.