У вас последнее слово не удаляется из строки, цикл никогда не заканчивается (функция smena). То есть до записи результатов процесс даже не доходит.
Код:
function smena (str:string):string;
var
pr:integer;
begin
Result:='';
while Length(str)>0 do
begin
pr:=Pos(' ',str); // Здесь неплохо бы на 0 проверять результат поиска
Insert(Copy(str,1,pr),Result,1);
Delete(str,1,pr);
if pr=0 then
begin
// Вот здесь сделайте что-нибудь с исходной строкой
// Например после инсерта напишите str := ''
Insert(str+' ',Result,1);
end;
pr:=0; // Эта строка совершенно не нужна
end;
end;