Ver Mensaje Individual
  #7  
Antiguo 20-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
no, no, que no. Que no e a. (nada, que me apetecía un trabalenguas )

Código Delphi [-]
procedure Porvalor(const dato:integer);

procedure PorReferencia(var dato:integer);

Al menos a mí me enseñaron que pasar por referencia implica el "var" delante del parámetro, y podemos modificar el valor de la variable "dato".

En el caso de objetos, digamos que "no es común" modificar el valor de la variable, es como si quisiéramos hacer esto:
Código Delphi [-]
procedure PorReferencia(var dato:TListView);
begin
  dato := pointer(300);
end;
Aquí si es necesario pasar el ListView por referencia, ya que estamos modificando el valor que contiene la variable dato... aunque eso si... a saber qué hay en la dirección 300 de nuestra RAM, casi seguro que no está el ListView

Al pasar un objeto por valor, realmente estamos queriendo decir que su dirección de RAM no la podemos cambiar. Pero podemos modificar todas sus propiedades y eventos, ya que estos, no se encuentran en la propia variable "dato" sino en el espacio que ocupa el objeto.

Ufff, no sé si he tenido una violación de acceso a memoria con tanto objeto en mente

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