Lo siento, era fallo mío.
No se trataba del paso de los parametros, sino de tratar la propiedad Text como un string normal, el problema es que no te deja asignar caracter por caracter. El nuevo codigo me queda así (ahora ya funciona):
Código:
procedure ParsReal(var a:Array of TEdit);
var
i,j:integer;
aux:string;
begin
for i:=0 to Length(a)-1 do
for j:=1 to Length(a[i].Text) do
if a[i].Text[j]='.' then
begin
aux:=a[i].Text;
aux[j]:=',';
a[i].Text:=aux;
end
else if (a[i].Text[j]<'0') or (a[i].Text[j]>'9') then
raise Exception.Create(a[i].Name+' real no válido');
end;
De todas formas aún tengo una duda: he tenido que quitar el var en el parametro porque al compilar me decia que un objeto constante no puede ser pasado como un parametro var.
Un saludo