jlrbotella, viendo tu código he detectado dos errrores:
1. ¿Quieres una función o procedimiento? Porque primeramente mencionas una función, pero en tu código hablas de un procedure.
2. Es lógico lo que planteas hacer. Pero tiene una gravísima falla. Si declaras a tu código como un procedimiento necesariamente debes indicar que el parámetro debe ser suministrado por valor y en tu ¡código no lo haces! Es por ello que el resultado que muestra es incorrecto.
Si lo declaras como función, el valor obtenido será el correcto y ya no es necesario que el parámetro sea pasado por valor.
En sintesis lo que necesitas es:
Código Delphi
[-]procedure CambiarCadena(var ValorOriginal : string);
begin
ValorOriginal := ValorOriginal + ' cambiado';
end;
O bien:
Código Delphi
[-]function CambiarCadena(ValorOriginal : string): string;
begin
result := ValorOriginal + ' cambiado';
end;
Escoje la que más te guste. No es necesario que andes operando con punteros.
Saludos,