Ver Mensaje Individual
  #6  
Antiguo 14-12-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
A ver si puedo explicarlo sencillamente o no
Código Delphi [-]
procedure SetText(const Value: string)
procedure SetText(Value: string)
En principio, esos dos compadres son iguales, pero no es lo mismo.

En el primero, cuando dentro de SetText intentas hacer una asignación a Value, es decir, del tipo

Código Delphi [-]
procedure SetText(const Value:String);
begin
   Value := 'pepe que no';
end;

Aqui delphi en compilación no te deja modificar la variable, porque ha sido pasada con el Const.

En este otro caso:

Código Delphi [-]
procedure SetText(Value:String);
begin
   Value := 'pepe que si que si';
end;

Value, dentro de la funcion, te permite modificarla, pero creo que con esto queda más claro:

Código Delphi [-]
var valor:string;
begin
  valor := 'pepe';
  SetText(valor);
  showmessage(valor);
end;
valor tendrá 'pepe', dentro de la funcion SetText, se le da el valor 'pepe que si que si', pero solo dentro de la funcion SetText, cuando salga, es decir en el showMessage saldrá 'pepe'

Obviamente, si ponemos SetText(var Value:String);
se modifica el valor, y en el showMessage, saldrá 'pepe que si que si'

Por tanto, poner el "Const" es un seguro de vida, si quieres modificar la variable localmente o no.

Otra cosa distinta es cuando se pasan objetos:
Código Delphi [-]
procedure SetText(const Value: Tcomponent)
procedure SetText(Value: Tcomponent)

En este caso se pasa un puntero (de 4 bytes) al objeto, por tanto, todos los objetos se pasan por referencia, da igual si pones const, si no lo pones, o si lo pasas con var. De las 3 formas podrás modificar las propiedades del objeto, el width, height, etc.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita